码迷,mamicode.com
首页 > 其他好文 > 详细

深入理解JVM-内存溢出案例演示与分析

时间:2019-07-21 18:07:48      阅读:111      评论:0      收藏:0      [点我收藏+]

标签:内存溢出   存储   说明   ips   href   log   进一步   机器   通过   

1.java堆溢出

  技术图片

  思路:Java堆用于存储对象实例,只要不断地创建对象,并且保证GC Roots到对象之间有可达路径来避免垃圾回收机制清除这些对象,

     那么在对象数量到达最大堆的容量限制后就会产生内存溢出异常。

     jvm参数:-Xmx 20M, -Xms 20M,避免堆自动扩展。

  案列代码

  https://www.cnblogs.com/newAndHui/p/11105956.html 的2.4.案例四:内存快照分析
  运行结果:Java heap space
  解决方案
  1.先通过内存映像分析工具(如Eclipse Memory Analyzer)对Dump出来的堆转储快照进行分析
  2.确认内存中的对象是否是必要的,也就是要先分清除到底是出现了内存泄漏(Memory Leak)还是内存溢出(Memory Overflow)
  内存泄漏:
  1.如果是内存泄漏,可进一步通过工具查看泄漏对象到GC Roots的引用链
  2.于是就能找到泄露对象是通过怎样的路径与GC Roots相关联并导致垃圾收集器无法自动回收他们的

  内存溢出:
  说明:如果不存在泄漏,换句话说,就是内存中的对象确实还必须存活着,
  1.从代码上检查虚拟机的堆参数(-Xmx与-Xms),与机器物理内存对比看是否还可以调大
  2.从代码上检查是否存在某些对象生命周期过长持有状态时间过长的情况,尝试减少的程序运行期的内存消耗

深入理解JVM-内存溢出案例演示与分析

标签:内存溢出   存储   说明   ips   href   log   进一步   机器   通过   

原文地址:https://www.cnblogs.com/newAndHui/p/11221804.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!