Java之JVM学习整理



常见配置汇总 
堆设置 
-Xms:初始堆大小 
-Xmx:最大堆大小 
-XX:NewSize=n:设置新生代大小
-Xmn:设置新生代大小
-XX:NewRatio=n:设置新生代和老生代的比值。如:为3,表示新生代与老生代比值为1:3,新生代占整个新生代老生代和的1/4 
-XX:SurvivorRatio=n:新生代中Eden区与两个Survivor区的比值。注意Survivor区有两个。如:3,表示Eden:Survivor=3:2,一个Survivor区占整个新生代的1/5 
-XX:MaxPermSize=n:设置永久带大小 
收集器设置 
-XX:+UseSerialGC:设置串行收集器 
-XX:+UseParallelGC:设置并行收集器 
-XX:+UseParalledlOldGC:设置并行老生代收集器 
-XX:+UseConcMarkSweepGC:设置并发收集器 
垃圾回收统计信息 
-XX:+PrintGC 
-XX:+PrintGCDetails 
-XX:+PrintGCTimeStamps 
-Xloggc:filename 
并行收集器设置 
-XX:ParallelGCThreads=n:设置并行收集器收集时使用的CPU数。并行收集线程数。 
-XX:MaxGCPauseMillis=n:设置并行收集最大暂停时间 
-XX:GCTimeRatio=n:设置垃圾回收时间占程序运行时间的百分比。公式为1/(1+n) 
并发收集器设置 
-XX:+CMSIncrementalMode:设置为增量模式。适用于单CPU情况。 
-XX:ParallelGCThreads=n:设置并发收集器新生代收集方式为并行收集时,使用的CPU数。并行收集线程数。

1 跟踪调试参数
1.1 跟踪垃圾回收
-XX:+PrintGC:使用这个参数启动Java虚拟机后,只要遇到GC,就会打印日志。
-XX:+PrintGCDetails:获取更详细的GC信息。
-XX:+PrintHeapAtGC:可以在每次GC前后分别打印堆的信息。
-XX:+PrintGCTimeStamps:会在每次GC发生时,额外输出GC发生的时间,该输出时间为虚拟机启动后的时间偏移量。
-XX:+PrintGCApplicationConcurrentTime:可以打印应用程序的执行时间
-XX:+PrintGCApplicationStoppedTime:可以打印应用程序由于GC而产生的停顿时间。
-XX:+PrintReferenceGC:用来跟踪系统内的软引用、弱引用、虚引用和Finallize队列。

1.2 类加载/卸载的跟踪
-XX:+TraceClassLoading:跟踪类的加载。
-XX:+TraceClassUnloading:跟踪类的卸载。
-XX:+PrintClassHistogram:打印、查看系统中类的分布情况。

1.3 系统参数查看
-XX:+PrintVMOptions:在运行时,打印虚拟机接收到命令行显示参数。
-XX:+PrintCommandLineFlags:打印传递给虚拟机的显式和隐式参数,隐式参数未必是通过命令行直接给出的,它可能是由虚拟机启动时自行设置的。
-XX:+PrintFlagsFinal:打印所有的系统参数的值。

2 堆参数配置
2.1 最大堆和初始堆的设置
-Xmx,-Xms:分别表示最大堆空间和初始堆空间大小。
在实际工作中,可以直接将初始堆和最大堆空间设置相等,这样做可以减少垃圾回收次数,提高程序性能。

2.2 新生代
-Xmn:可以用于设置新生代的大小。新生代的大小会直接影响到老年代的大小,这个参数堆系统性能以及GC行为由很大的影响。新生代的大小一般设置为整个堆空间的1/3到1/4左右。
-XX:SurvivorRatio:用来设置新生代中eden空间和from/to空间的比例关系。

2.3 堆溢出处理
在Java程序运行的过程中,如果堆空间不足,则有可能抛出内存溢出错误(out of memory)简称为OOM。
-XX:+HeapDumpOnOutOfMemoryError:在内存溢出时导出整个堆信息。
-XX:+HeapDumpPath:指定堆的存放路径。

3 非堆内存的参数配置
-XX:MaxMetaspaceSize:指定元空间的最大可用值。
-Xss:指定线程的栈大小。
-XX:MaxDirectMemorySize:最大可用直接内存,如不设置,默认值为最大堆空间。直接内存的溢出依然会引起系统的OOM。

4 虚拟机工作模式:Client和Server
-client和-server:分别指定虚拟机使用Client模式和Server模式。

参考引用其他:

深入浅出JVM调优,看完你就懂
https://blog.csdn.net/Javazhoumou/article/details/99298624
深入理解java虚拟机——常用虚拟机参数
https://www.jianshu.com/p/8c553e48166c
java 虚拟机(jvm)基本概念和虚拟机参数配置
https://www.jianshu.com/p/605e54cc4d40
Java虚拟机(JVM)你只要看这一篇就够了!
https://blog.csdn.net/qq_41701956/article/details/81664921

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值