堆内存大小设置
-Xmx 堆最大值,例子:-Xmx1g. -Xmx512m
-Xms 堆最小值,例子:-Xmx1g. -Xs512m
-Xmn 年轻代大小,设置了这个值,剩余堆内存分配给老年代
垃圾回收器设置
-XX:+UseParNewGC 年轻代使用ParNew垃圾回收器
-XX:+UseConcMarkSweepGC 老年代使用CMS垃圾回收器
-XX:+UseCMSCompactAtFullCollection CMC回收时启动碎片整理
-XX:SurvivorRatio=4 年轻代中eden区和一个suvivor区内存大小的比值
-XX:MaxTenuringThreshold=10 年轻代晋升到老年代的年龄
-XX:CMSInitiatingOccupancyFraction=80 CMC垃圾回收,老年代发生回收时的内存占比
jps 查看当前的Java进程
jps -lvm 列出更多参数
java -jar hello.jar 运行jar包
java -jar -Xmx1g hello.jar & 后台运行jar包,并设置最大堆内存为1g
# 必备
-XX:+PrintGCDetails
-XX:+PrintGCDataStamps
-XX:+PrintTenuringDistribution
-XX:+PrintHeapAtGC
-XX:+PrintReferenceGC
-XX:+PrintGCApplicationStoppedTime
# 可选
-XX:+PrintSafepointStatistics
-XX:PrintSafepointStatisticsCount=1
# GC日志输出的文件路径
-Xloggc:/path/to/gc-%t.log
# 开启日志文件分割
-XX:+UseGCLogFileRotation
# 最多分割几个文件,超过之后从头文件开始写
-XX:NumberOfGCLogFiles=10
# 每个文件上限大小,超过就触发分割
-XX:GCLogFileSize=100M
jmap命令
#输出JVM进程的一些情况
jmap -heap PID