分享几个JVM的容易忽视的问题,但愿对你们有所帮助缓存
-Xms
表示JVM
启动时分配的内存、-Xmx
表示JVM
运行过程当中最大可用内存。-Xss
决定,而栈内存取决于栈帧数量,即栈深度,以及每一个栈帧的大小。2
种异常分为OOM
以及StackOverflowError
,那么,取决于什么状况,会抛相应的异常呢?取决于栈内存是否支持扩展,HotSpot虚拟机不支持扩展jvm
HotSpot
虚拟机不支持扩展,所以OOM
的发生状况:建立线程时就由于没法得到足够内存而出现OOM
,建立线程时内存不足,偏偏缘由多是每一个线程的栈分配内存设置过大,在操做系统内存使用状态的影响下发生。-Xss
所决定的栈内存容量,就会抛出StackOverflowError
。String::intern()
)String::intern()
、静态变量等移出到堆内存;JDK8彻底放弃永久代,改用本地内存的元空间(类型信息也移到了元空间)。String::intern()
来制造方法区和常量池的OOM
一、JDK6或更早:字符串常量池大小增加,致使永久代的内存大小超过
-XX:MaxPermSize
规定的大小,致使出现PermGen space
出现OOM
。 二、JDK7开始,字符串常量池移入Java堆中,使用String::intern()
报出OOM
也是Java heap space
xss
OOM
PermGen space
出现OOM
Java heap space