jvm 内存溢出

Posted dwdw

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了jvm 内存溢出相关的知识,希望对你有一定的参考价值。

堆内存溢出

  堆内存中存在大量对象,这些对象都有被引用,当所有对象占用空间达到堆内存的最大值,就会出现内存溢出OutOfMemory:Java heap space

永久代溢出

  类的一些信息,如类名、访问修饰符、字段描述、方法描述等,所占空间大于永久代最大值,就会出现OutOfMemoryError:PermGen space

内存溢出的检测方法

Jdk/bin目录下有很多检测工

图形界面: Jconsole Jvisualvm

技术图片

 

技术图片

命令行工具

  Jstat –gcutil pid 1000 100      FullGC频率:单次FullGC时间<200ms

  技术图片

  Jmap –histo pid | head -20

  技术图片

  Jmap –heap pid

  技术图片

 

工程日志报错

技术图片

 

jvm 常见参数

  -Xms2048m,初始堆大小,建议<物理内存的1/4,默认值为物理内存的1/64

  -Xmx2048m,最大堆大小,建议与-Xms保持一致,默认值为物理内存的1/4

  -Xmn512m,新生代大小,建议不超过堆内存的1/2 -Xss256k,线程年轻代堆栈大小,建议256k

  -XX:PermSize=256m,永久代初始值,默认值为物理内存的1/64

  -XX:MaxPermSize=256m,永久代最大值,默认值为物理内存的1/4

  -XX:SurvivorRatio=8:年轻带中Eden区和Survivor区的比例,默认为8:1,即Eden(8),From Space(1),ToSpace(1)

  -XX:+UseConcMarkSweepGC:开启CMS垃圾回收器

以上是关于jvm 内存溢出的主要内容,如果未能解决你的问题,请参考以下文章

JVM之内存泄漏和内存溢出

JVM之内存泄漏和内存溢出

jvm学习一|jvm内存区域以及内存溢出

内存溢出及Jvm监控工具

JVM各种情况内存溢出分析

JVM内存溢出分析:堆内存溢出+虚拟机+方法区——JVM系列