现象:

堆内存溢出,java.lang.OutOfMemoryError: Java heap space
用jmap查看,显示
num     #instances         #bytes  class name
----------------------------------------------
   1:       6736096      269443840  java.util.LinkedHashMap$Entry
   2:       1360211      116788016  [C
   3:       3560635      113940320  java.util.Hashtable$Entry
   4:       1648844       92335264  java.security.Provider$Service
   5:       3181146       76347504  java.security.Provider$ServiceKey
   6:         21269       54483872  [Ljava.util.HashMap$Entry;
   7:       1456006       46592192  java.lang.String
   8:          5837       26712568  [Ljava.util.Hashtable$Entry;
   9:        722313       23248472  [Ljava.lang.Object;
  10:        142687       20602688 
  11:        142687       19416024 
  12:        718388       17241312  java.util.ArrayList
  13:         13487       14511200 
  14:         13487       10430624 
  15:         11194        8157360 
  16:        127989        7303936 
  17:         29127        3953880  [B
  18:         19410        3739704  [I
  19:         35613        3133944  java.lang.reflect.Method
  20:         69481        2223392  java.util.HashMap$Entry
  21:          2886        2137144 
  22:         14176        1474304  java.lang.Class
  23:         18304        1127368  [S
  24:         21231        1068624  [[I
  25:         12681         811584  com.ibatis.sqlmap.engine.mapping.parameter.ParameterMapping
  26:         12681         811584  com.ibatis.sqlmap.engine.mapping.parameter.ParameterMapping
  27:         11454         641424  java.util.LinkedHashMap
  28:          9802         627328  com.ibatis.sqlmap.engine.mapping.sql.dynamic.elements.SqlTag
  29:          9802         627328  com.ibatis.sqlmap.engine.mapping.sql.dynamic.elements.SqlTag
  30:         20443         490632  com.ibatis.sqlmap.engine.mapping.sql.SqlText
  31:         20443         490632  com.ibatis.sqlmap.engine.mapping.sql.SqlText
  32:          9738         467424  java.util.HashMap
  33:          9231         443088  org.apache.catalina.loader.ResourceEntry
  34:         10718         428720  java.lang.ref.SoftReference
  35:         21067         416344  [Lcom.ibatis.sqlmap.engine.mapping.parameter.ParameterMapping;
  36:         21067         416344  [Lcom.ibatis.sqlmap.engine.mapping.parameter.ParameterMapping;
  37:         12940         414080  java.lang.ref.WeakReference
  38:         19937         413624  [Ljava.lang.Class;
  39:           660         385440 
  40:         10423         376192  [Ljava.lang.String;

解决方案:
/usr/local/java/jdk1.6.0_37/jre/lib/security/java.security 加上一行 security.provider.9=org.bouncycastle.jce.provider.BouncyCastleProvider
修改RSAUtil new org.bouncycastle.jce.provider.BouncyCastleProvider() -> "BC"
static{
    if (Security.getProvider(BouncyCastleProvider.PROVIDER_NAME) == null){
        logger.info("security provider BC not found");
        Security.addProvider(new BouncyCastleProvider());
    }
}
部署:从WAR中移出bouncycastle的jar,移到/usr/local/java/jdk1.6.0_37/jre/lib/ext下面(不需要加静态导入),移到tomcat/lib下面(需要加静态导入)

Bouncy Castle内存溢出的更多相关文章

  1. Java 内存区域与内存溢出

    内存区域 Java 虚拟机在执行 Java 程序的过程中会把他所管理的内存划分为若干个不同的数据区域.Java 虚拟机规范将 JVM 所管理的内存分为以下几个运行时数据区:程序计数器.Java 虚拟机 ...

  2. jvm内存溢出分析

    概述 jvm中除了程序计数器,其他的区域都有可能会发生内存溢出 内存溢出是什么? 当程序需要申请内存的时候,由于没有足够的内存,此时就会抛出OutOfMemoryError,这就是内存溢出 内存溢出和 ...

  3. 如何写出让java虚拟机发生内存溢出异常OutOfMemoryError的代码

    程序小白在写代码的过程中,经常会不经意间写出发生内存溢出异常的代码.很多时候这类异常如何产生的都傻傻弄不清楚,如果能故意写出让jvm发生内存溢出的代码,有时候看来也并非一件容易的事.最近通过学习< ...

  4. Tomcat内存溢出的三种情况及解决办法分析

    Tomcat内存溢出的原因 在生产环境中tomcat内存设置不好很容易出现内存溢出.造成内存溢出是不一样的,当然处理方式也不一样. 这里根据平时遇到的情况和相关资料进行一个总结.常见的一般会有下面三种 ...

  5. webSphere内存溢出

    有一个做了很长时间的项目,是用websphere做生产环境的,可是一旦加载的项目过多,webSphere就很傲娇的内存溢出,这是一个折腾了公司里某个前辈很久很久的问题,因为是测试版,所以各种官方文档说 ...

  6. java内存溢出和内存泄露

    虽然jvm可以通过GC自动回收无用的内存,但是代码不好的话仍然存在内存溢出的风险. 最近在网上搜集了一些资料,现整理如下: —————————————————————————————————————— ...

  7. myeclipse tomcat内存溢出解决方法

    Tomcat直接启动正常,通过myeclipse启动tomcat内存溢出.MyEclipse启动Tomcat无视catalina.bat中设置内存大小的问题.在 tomcat的catalina.bat ...

  8. 《深入理解Java虚拟机》Java内存区域与内存溢出异常

    注:“蓝色加粗字体”为书本原语 先来一张JVM运行时数据区域图,再接下来一一分析各区域功能:   程序计数器 程序计数器(program Counter Register)是一块较小的内存空间,它可以 ...

  9. weblogic10内存溢出解决方法

    在开发过程中经常会遇到weblogic内存溢出问题,用下面的办法解决了. 找到domain/bin下的setDomainEnv.cmd文件,里面可以找到以下四行代码,将值该打一倍,重启服务. set ...

随机推荐

  1. 【sicily】卡片游戏

    卡片游戏  Time Limit: 1sec    Memory Limit:32MB Description 桌上有一叠牌,从第一张牌(即位于顶面的牌)开始从上往下依次编号为1~n.当至少还剩两张牌 ...

  2. 构造方法 static 块 {}块 执行顺序

    package com.test.innerclass; public class HelloB extends HelloA { public HelloB() { System.out.print ...

  3. 攻城狮在路上(叁)Linux(二十三)--- linux磁盘参数修改(设备代码、设备名)

    一.mknod:设置设备代码 linux中,所有的设备都是用文件来表示,文件通过major与minor数值来判断. major为主设备代码,minor为设备代码(需要查询),示例如下: /dev/hd ...

  4. struct和typedef struct

    转自:http://www.cnblogs.com/qyaizs/articles/2039101.html struct和typedef struct 分三块来讲述: 1 首先://注意在C和C++ ...

  5. 注解:【有连接表的】Hibernate单向N->1关联

    Person与Address关联:单向N->1,[有连接表的] Person.java package org.crazyit.app.domain; import javax.persiste ...

  6. java线程之——sleep()与wait()的区别

    sleep()是Thread的方法,wait()是Object的方法 如果线程进入了同步锁,sleep不会释放对象锁,wait会释放对象锁 sleep的作用就是让正在执行的线程主动让出CPU,给其它线 ...

  7. centos7 卸载mysql

    [root@zyf ~]# rpm -qa|grep -i mysql mysql-community-libs--.el7.x86_64 mysql-community-server--.el7.x ...

  8. Linux常用命令之安装VMware10中安装CentOS 6.4

    笔者用过的Linux系统也就是现在主流的企业级linu系统RedHat跟CentOS,这边主要介绍下CentOS 6.4的安装 RedHat和CentOS差别不大,CentOS是一个基于RedHat  ...

  9. Webbrowser中显示MHT文件

    把MHT文件存成临时文件,用WEBBROWSER的Navigate方法打开,代码如下: //从程序集中读取资源文件 Assembly asmm = Assembly.GetCallingAssembl ...

  10. Android 编程下 ListView 的 HeaderView 和 FooterView 不可选择点击

    在 ListView 里,HeaderView 和 FooterView 也占一行,与其他的 item 一样,可以点击,有索引,HeaderView 的索引为0.如果要使这两项不可点击,可以使用下面的 ...