java 非堆内存溢出问题

经过测试发现有以下几点:

1、window7下部署一个空的javaweb(jdk7、tomcat7),什么都不操作,它的非堆内存还是出现缓慢的增长的,而且不回收

2、class.forName,每次都会加载类,而不是从内存中读取,这个有点坑。与官方文档不符合

3、每次调用反射都会增加非堆内存,GC无法回收,如果反射的class比较大,效果会很明显,这个更加坑

4、如果你的项目加载几十M的jar,那么 启动后占用非堆内存也很大

5、对于反射不回收的问题,spring的动态代理处理方式是使用缓存,第一次调用反射然后cache,后面就从cache中取。不再调用反射。

如下:

       Enhancer enhancer = new Enhancer();
       enhancer.setSuperclass(this.target.getClass());
       enhancer.setUseCache(true);// 设置是否使用缓存,默认值就是true

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值