JVM学习(二):内存溢出
1、Java对象无法被垃圾收集器回收就会造成内存泄漏,内存泄漏越来越多就可能会导致内存溢出(java.lang.OutOfMemoryError)。
2、内存溢出有以下几种情形:
(1)堆溢出
(2)虚拟机栈(本地方法栈)溢出
(3)方法区(运行时常量池)溢出
(4)直接内存溢出
3、常用JVM参数:
(1)-Xms堆内存最小值;-Xmx堆内存最大值(两个参数设置值一样时则堆内存不可自动扩展)。
(2)-Xss虚拟机栈内存大小;-Xoss本地方法栈内存大小(HotSpot中不区分虚拟机栈和本地方法栈,因此-Xoss参数对HotSpot虚拟机无效)。
(3)-XX:PermSize=方法区内存最小值,-XX:MaxPermSize=方法区内存最大值。
(4)-XX:MaxDirectMemorySize=直接内存大小,如果不指定,则默认与Java堆最大值(-Xmx)一致。