1.jvm启动相关参数
-XX:+HeapDumpOnOutOfMemoryError:oom时生成dump文件
-XX:HeapDumpPath:oom时生成的dump文件的位置;示例:/tmp/logs
-XX:+PrintGCDetails:gc的时候,打印gc日志;
-Xloggc:gc日志文件的位置;示例:/tmp/logs/gc.log
-Xms:堆的初始空间;示例:-Xmx1024m,表示初始堆大小为1024m
-Xmx:堆的最大空间;示例:Xmx1024m,表示堆最大空间为1024m;一般-Xms跟-Xmx设置成一样大小,可以避免JVM内存自动扩展
-Xmn:年轻代大小;示例:-Xmn512m,表示年轻代空间为512m
堆内存
堆内内村
堆外内存
堆外内存就是不属于jvm(java虚拟机)管辖的内存,也就是操作系统的内存(c语言中直接分配的内存),
可参考:
https://www.jianshu.com/p/17e72bb01bf1
https://juejin.cn/s/jvm%20%E5%A0%86%E5%A4%96%E5%86%85%E5%AD%98%E8%AE%BE%E7%BD%AE%E5%A4%9A%E5%B0%91
可以通过 JVM 参数 "-XX:MaxDirectMemorySize" 来设置堆外内存的最大值
例如:-XX:MaxDirectMemorySize=40M,将最大堆外内存设置为40M。
根据经验,建议将堆外内存的大小设置为应用程序使用内存的 20%-30% 左右。