OOM和*Error 笔记
程序员文章站
2022-07-12 20:08:55
...
SOFE之*Error
栈溢出 调大jvm参数
-Xss=1024k
OOM之Java heap space
在JVM中如果98%的时间是用于GC(Garbage Collection)且可用的 Heap size 不足2%的时候将抛出异常信息,java.lang.OutOfMemoryError: Java heap space。
所以产生这个异样的原因通常有两种:
1.程序中出现了死循环
2.程序占用内存太多,超过了JVM堆设置的最大值。
对于第一种情况,需要自己查看程序代码,这里不再多说。
第二种情况,我们手工扩大JVM堆的参数设置。JVM堆的设置是指java程序运行过程中JVM可以调配使用的内存空间的设置。在JVM启动时,JVM堆会自动设置heap size值。通常情况下,初始空间(即-Xms)默认值是物理内存的1/64,最大空间是物理内存的1/4。可以利用JVM提供的-Xmn -Xms -Xmx等选项可进行设置
OOM之GC overhead limit exceeded
“并行/并发回收器在GC回收时间过长时会抛出OutOfMemroyError。过长的定义是,超过98%的时间用来做GC并且回收 了不到2%的堆内存。用来避免内存过小造成应用不能正常工作
OOM之Direct buffer memory
篮筐以外黑框以内是本地内存
NIO程序时 经常出现
OOM之unable to create new native thread
OOM之Metaspace
元空间默认大小为21m jdk89 ,设置固定的元空间大小 并且类信息不断地加载进去就会出现这种情况,解决方法是增加元空间的大小
-XX:MetaSpaceSize = xx m
-XX:MaxMetaSpaceSize=xx m
上一篇: 10分钟搞定 harbor