mat java heap space_Memory Analyzer Tool定位Java heap space内存泄漏

java heap space是一个很蛋疼的问题,如果开发调试时遇到还好,如果是在项目上线后运行一段时间后,才抛出该异常,那真的很悲剧(那你得找代码中到底是哪里内存泄露了),这真是一个悲伤的故事。

1.java head space堆内存溢出

分  析

发生这种问题的原因是java虚拟机创建的对象太多,在进行垃圾回收之间,虚拟机分配的到堆内存空间已经用满了,与Heap space有关。

解决方法:

1. 增加Java虚拟机中Xms(初始堆大小)和Xmx(最大堆大小)参数的大小。如:set JAVA_OPTS= -Xms256m -Xmx1024m。

2. 检查程序,看是否释放发生内存泄露(对象未释放、集合过大、网络连接未关闭、算法有问题...),找到泄露的地方,修改程序。

第一种方法适用场景:

jvm的最大内存设置过小(一般的项目设置成1G就足够了,还发生这种异常就有点不正常了)。

第二种方法适用的场景:

对象内存不能被java虚拟机释放,并且不断增长,占用了很大的空间,导致jvm内存不足。

2.利用MAT工具定位内存泄露

了解jvm垃圾回收机制

java不像C一样需要手动管理程序内存,它有自己的垃圾回收机制:每隔一段时间运行异步线程去回收垃圾来释放内存,并不需要我们辅助回收内存,但这并不代表程序员就可以随心所欲的写代码,而不用担心内存的回收了。因为java垃圾回收是有条件的,下面是垃圾回收机制的简单介绍:

1.java虚拟机每隔一段时间调用一次垃圾回收,回收没有被引用了的内存数据&#

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值