JVM内存模型图
![]()
1. jar包启动时添加如下参数
java -Xms1024m -Xmx1024m -XX:MetaspaceSize=256m -XX:MaxMetaspaceSize=256m -XX:SurvivorRatio=8 -jar xxx.jar
3. 内存优化:
栈: 1M, 一个线程1M, 一个线上Tomcat项目可能有300个线程, 就是300M;
堆: 一般会把机器物理内存的一半分给堆;
32位操作系统, 单个进程内存的最大寻址空间为2的32次方, 也就是4G内存, 故-Xmx一般小于2G
64位操作系统, 单个进程内存的最大寻址空间为2的64次方, 非常大, 故-Xmx最大值可以认为是无限大
元空间: 正常512M肯定够了;
![]()
4. 服务器查看jvm信息
5. 增加gc日志输出和oom dump文件输出
java -Xms1024m -Xmx1024m -XX:MetaspaceSize=256m -XX:MaxMetaspaceSize=256m -XX:SurvivorRatio=8
-XX:+PrintGCDetails -XX:+PrintGCDateStamps -Xloggc:/app/gc/gc.log
-XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/app/dump/heapdump.hprof
-Dfile.encoding=utf-8
-jar xxx.jar