JVM常用参数配置

本文涉及:gc、堆、栈、永久区、元数据区的常用参数

GC基本参数

打印gc简要信息:-XX:+PrintGC

[GC (System.gc())  198247K->197248K(261632K), 0.0178572 secs]	
[Full GC (System.gc())  197248K->197184K(261632K), 0.0842625 secs]

上方结果描述:

分别是GC和Full GC释放的空间以及所用的时间

打印gc的详细信息 : -XX:+PrintGCDetails

Heap	
 PSYoungGen      total 18944K, used 164K [0x00000000eb200000, 0x00000000ec700000, 0x0000000100000000)	
  eden space 16384K, 1% used [0x00000000eb200000,0x00000000eb2290d0,0x00000000ec200000)	
  from space 2560K, 0% used [0x00000000ec200000,0x00000000ec200000,0x00000000ec480000)	
  to   space 2560K, 0% used [0x00000000ec480000,0x00000000ec480000,0x00000000ec700000)	
 ParOldGen       total 292352K, used 246336K [0x00000000c1600000, 0x00000000d3380000, 0x00000000eb200000)	
  object space 292352K, 84% used [0x00000000c1600000,0x00000000d0690290,0x00000000d3380000)	
 Metaspace       used 2866K, capacity 4486K, committed 4864K, reserved 1056768K	
  class space    used 308K, capacity 386K, committed 512K, reserved 1048576K

上方结果描述:

  • 第2行:新生代总内存和已用内存

  • 第3、4、5行:新生代各个区总内存和已用内存,这里eden:from:to的比例为8:1:1

  • 第6行:老年代总内存和已用内存

指定gc日志的位置: -Xloggc:D:\appLog\app.log

打印gc前后的堆栈信息: -XX:+PrintHeapAtGC

{Heap before GC invocations=1 (full 0):	
 PSYoungGen      total 18944K, used 1639K [0x00000000eb200000, 0x00000000ec700000, 0x0000000100000000)	
  eden space 16384K, 10% used [0x00000000eb200000,0x00000000eb399c28,0x00000000ec200000)	
  from space 2560K, 0% used [0x00000000ec480000,0x00000000ec480000,0x00000000ec700000)	
  to   space 2560K, 0% used [0x00000000ec200000,0x00000000ec200000,0x00000000ec480000)	
 ParOldGen       total 491008K, used 442368K [0x00000000c1600000, 0x00000000df580000, 0x00000000eb200000)	
  object space 491008K, 90% used [0x00000000c1600000,0x00000000dc600090,0x00000000df580000)	
 Metaspace       used 2860K, capacity 4486K, committed 4864K, reserved 1056768K	
  class space    used 307K, capacity 386K, committed 512K, reserved 1048576K	
 [Full GC (System.gc())  443064K->442944K(509952K), 0.1634157 secs]	
Heap after GC invocations=1 (full 0):	
 PSYoungGen      total 18944K, used 664K [0x00000000eb200000, 0x00000000ec700000, 0x0000000100000000)	
  eden space 16384K, 0% used [0x00000000eb200000,0x00000000eb200000,0x00000000ec200000)	
  from space 2560K, 25% used [0x00000000ec200000,0x00000000ec2a6030,0x00000000ec480000)	
  to   space 2560K, 0% used [0x00000000ec480000,0x00000000ec480000,0x00000000ec700000)	
 ParOldGen       total 491008K, used 442376K [0x00000000c1600000, 0x00000000df580000, 0x00000000eb200000)	
  object space 491008K, 90% used [0x00000000c1600000,0x00000000dc602090,0x00000000df580000)	
 Metaspace       used 2860K, capacity 4486K, committed 4864K, reserved 1056768K	
  class space    used 307K, capacity 386K, committed 512K, reserved 1048576K	
}

上方结果描述:

  • 1-9行是gc之前的新生代、老年代和元空间(这是jdk8更新的,之前是永久区)信息

  • 第10行打印了一次full gc的相关信息

监控类的加载:-XX:+TraceClassLoadingPreorder 

[Opened C:\Program Files (x86)\Java\jdk1.8.0_181\jre\lib\rt.jar]	
[Loaded java.lang.Object from C:\Program Files (x86)\Java\jdk1.8.0_181\jre\lib\rt.jar]	
[Loaded java.io.Serializable from C:\Program Files (x86)\Java\jdk1.8.0_181\jre\lib\rt.jar]	
[Loaded java.lang.Comparable from C:\Program Files (x86)\Java\jdk1.8.0_181\jre\lib\rt.jar]	
[Loaded java.lang.CharSequence from C:\Program Files (x86)\Java\jdk1.8.0_181\jre\lib\rt.jar]	
[Loaded java.lang.String from C:\Program Files (x86)\Java\jdk1.8.0_181\jre\lib\rt.jar]	
[Loaded java.lang.reflect.AnnotatedElement from C:\Program Files (x86)\Java\jdk1.8.0_181\jre\lib\rt.jar]	
[Loaded java.lang.reflect.GenericDeclaration from C:\Program Files (x86)\Java\jdk1.8.0_181\jre\lib\rt.jar]	
[Loaded java.lang.reflect.Type from C:\Program Files (x86)\Java\jdk1.8.0_181\jre\lib\rt.jar]	
[Loaded java.lang.Class from C:\Program Files (x86)\Java\jdk1.8.0_181\jre\lib\rt.jar]	
。。。。。。。

堆栈参数

堆最大值: -Xmx20m 

堆的最小值: -Xms5m

获取系统堆内存信息

System.out.println("堆最大空间:" + Runtime.getRuntime().maxMemory() / 1024 / 1024 + "M");	
System.out.println("空闲空间:" + Runtime.getRuntime().freeMemory() / 1024 / 1024 + "M");	
System.out.println("可用空间:" + Runtime.getRuntime().totalMemory() / 1024 / 1024 + "M");

新生代的内存: -Xmn10m

eden区和两个s区的和,正常情况下是eden:s0:s1=8:1:1

新生代占老年的的比值:-XX:NewRatio=6

新生代与老年代的比率为1:6,正常情况下是新生代:老年代=3:8

 

 两个s区与eden的比值:-XX:SurvivorRatio=6

一个s区与eden的比率为1:6

发生堆溢出时异常文件路径:

-XX:HeapDumpPath=d:\appLog\a.dump

发生堆溢出时候执行的脚本:

-XX:OnOutOfMemoryError=d:\a.sh

栈的大小-Xss10m

永久区的初始大小:-XX:PermSize5m 

永久区的最大大小:-XX:MaxPermSize5m

元数据区大小:-XX:MaxMetaspaceSize=5m

 

点击下方“阅读原文”查看所有参数的示例使用代码!!!

640?wx_fmt=jpeg

万水千山总是情,点个 “在看” 行不行!!!

640?wx_fmt=png 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值