有遇到过内存泄漏吗,说说你的处理

遇到过,如

(1)Tomcat停止时为了防止内存泄漏,JDBC驱动程序被强制取消注册(Tomcat启动久关闭报错问题) 这个问题是当时忘记给JDBC关闭资源时候报错

(2)java.lang.OutOfMemoryError: Java heap space

这是典型的内存泄漏,简单说就是所有堆空间都被无法回收的垃圾对象占满,虚拟机无法再在分配新空间 

一般有单例造成的内存泄漏,由于单例的静态特性使得其生命周期和应用的生命周期一样长,如果一个对象已经不再需要使用了,而单例对象还持有该对象的引用,就会使得该对象不能被正常回收,从而导致了内存泄漏。

集合容器中的内存泄露
我们通常把一些对象的引用加入到了集合容器(比如ArrayList)中,当我们不需要该对象时,并没有把它的引用从集合中清理掉,这样这个集合就会越来越大。如果这个集合是static的话,那情况就更严重了

解决方案:查找对象的引用情况,基本就可以找到泄漏点

(3)java.lang.OutOfMemoryError: PermGen space

Perm空间被占满。无法为新的class分配存储空间而引发的异常。这个异常以前是没有的,但是在Java反射大量使用的今天这个异常比较常见了。主要原因就是大量动态反射生成的类不断被加载,最终导致Perm区被占满。

解决方案:

1.在Btrace下看看那里调用了defineClass Classloader,然后把没用的清除掉

2.设置 -XX:MaxPermSize=16m

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值