每次New一个BouncyCastleProvider导致的内存泄漏
来源:互联网 发布:知画与永琪圆房的文 编辑:程序博客网 时间:2024/05/16 23:37
问题原因
生产服务器的内存一直升高,直到宕机。内存分析的结论是:内存泄漏。
下载dump文件,经过解析堆栈日志,如下图所示:
The class "javax.crypto.JceSecurity", loaded by "<system class loader>", occupies 2,522,379,928 (95.73%) bytes. The memory is accumulated in one instance of "java.lang.Object[]" loaded by "<system class loader>".Keywordsjava.lang.Object[]javax.crypto.JceSecurity
是BouncyCastleProvider 这个类里面的方法, 全是静态的, new一个多一个, GC不回收, 慢慢就宕机。
dump代码如下:
解决方案
private static org.bouncycastle.jce.provider.BouncyCastleProvider bouncyCastleProvider = null; public static synchronized org.bouncycastle.jce.provider.BouncyCastleProvider getInstance() { if (bouncyCastleProvider == null) { bouncyCastleProvider = new org.bouncycastle.jce.provider.BouncyCastleProvider(); } return bouncyCastleProvider; }KeyPairGenerator keyPairGen = KeyPairGenerator.getInstance("RSA", getInstance());
内存泄漏分析工具参见:http://blog.csdn.net/shenhaiwen/article/details/54670234
阅读全文
0 0
- 每次New一个BouncyCastleProvider导致的内存泄漏
- 导致内存泄漏的原因
- ThreadLocal 导致的内存泄漏
- InputMethodManager导致的内存泄漏
- 如何解决new了之后因为执行流跳转而导致的内存泄漏的问题
- JceSecurity/BouncyCastleProvider导致JVM内存溢出、CPU过高问题排查
- 一个隐蔽的内存泄漏——pthread_create后没有detach导致内存持续增长
- 解决了一个隐蔽的内存泄漏——pthread_create后没有detach导致内存持续增长
- 解决了一个隐蔽的内存泄漏——pthread_create后没有detach导致内存持续增长
- VarFormat的不正确使用导致内存泄漏
- 导致IE浏览器内存泄漏的研究
- cvLoadImage导致内存泄漏的解决
- simple_html_dom使用不当导致的内存泄漏
- _com_util::ConvertBSTRToString 方法导致的内存泄漏
- 使用cvLoadImage导致内存泄漏的解决方法
- 一次dialog导致的内存泄漏
- 内部类导致内存泄漏的情况
- 经常导致内存泄漏的一些原因
- SpringMvc中的拦截器
- 栈 括号匹配
- jQuery中的animate
- 并发编程修炼七:同步容器
- ArrayList的坑
- 每次New一个BouncyCastleProvider导致的内存泄漏
- linux查看主机名以及更改主机名
- 《程序员面试题精选》05.输出一个字符串的所有子串
- 写在前面
- Retrofit2.0的get请求和post请求(入门级)
- 去除URL中带有的jsessionid
- leetcode: 8. String to Integer (atoi)
- Android自定义属性
- mac 系统中用 ngrok 内网穿透实现微信测试