配置JVM的常用参数

最近在学习JVM,把JVM常用的配置参数以及常用命令列出来做个笔记。虽然这些在Oracle官网都有,但是懒得翻

1. -Xss size 设置线程栈的大小(默认单位:byte),可在size后面加k/K代表kb,加m/M代表mb,加g/G代表gb

默认情况下,在linux,mac系统中默认为1024KB

例如(1) -Xss 1024 设置线程栈大小为1024byte (2)  -Xss 1m 设置栈大小为1m

 

2.linux中可以用jstack 进程id  来查看java进程中的所有线程

 

3. -Xmx(size) 或  -XX:MaxHeapSize=size  设置堆内存空间的最大值,size语法同上

-Xms设置堆空间初始值,一般和-Xmx设置的一样

-Xmn 或 -XX:NewSize=size + -XX:MaxNewSize=size 设置新生代的大小

例如(1)设置堆空间为8m   -Xms8m

 

4. jps命令 可查看jvm中有哪些进程,可以配合之后的jmap查看内存的信息

5. jmap -heap 进程id  查看进程号为id的进程中的堆信息

 

6. -XX:MaxMetaspaceSize=size ,size语法同上,设置jvm的元空间最大值,针对的是java1.8

7.  -XX:MaxPermSize=size,设置jvm永久代的最大值,针对java1.6 。永久代其实就是之后的元空间,不过发生了一些变化

 

8. javap -v xxxxxx.class    java的反编译工具,可以用其查看类的信息,包括访问修饰符,父类,接口,常量池等

 

9. -XX:+PrintStringTableStatistics 打印串池的信息

 

10. -XX:+PrintGCDetails -verbose:gc 显示垃圾回收时的信息

 

11. -XX:StringTableSize=桶(bucket)个数,我理解的是设置串池的最大容量

 

12.  -XX:SurvivorRatio=ratio 固定幸存区占Eden区的1/ratio,默认为8m

以下两条使得幸存区大小得以动态调整: -XX:InitialSurvivorRatio=ratio  和 -XX:+UseAdaptiveSizePolicy 动态调整比例

 

13. -XX:MaxTenuringThreshold=threshold  threshold代表放入老年代的阈值

-XX:+PrintTenuringDistribution 输出晋升(到老年代)详情

 

14. -XX:+ScavengeBeforeFullGC 指示在FullGc前做一次MinoGC

 

15.设置GC的类型

(1)-XX:+UseSerialGC  设置串行收集器

           或者 -XX:+UseSerialGC=Serial +SerialOld 

 

(2) -XX:+UseParallelGC(用于新生代) -XX:+UseParallelOldGC(用于老年代)  设置并行收集器(默认,吞吐量优先),开启一个,另一个也会开启

           -XX:+UseAdaptiveSizePolicy  自适应调整新生代的比例

          -XX:GCTimeRatio=ratio     设置吞吐量目标,调整垃圾回收时间与总时间的占比  公式:1/1+ratio 

          -XX:MaxGCPauseMillis=ms   设置stw(stop the world)的最大时间,默认200ms  ,与GCTimeRatio的目的冲突

          -XX:ParallelGCThreads=n  设置GC回收使用的线程数,一般和cpu的线程数一样

 

(3)-XX:+UseConcMarkSweepGC(用于老年代) 设置并发收集器(响应时间优先)

        -XX:ConcGCThreads=threads 和 -XX:ParallelGCThreads=n共同使用 ,ConcGC建议设为ParallelGC的1/4,让其他的用于用户线程工作

       -XX:CMSInitiatingOccupancyFraction=percent   percent是CMS回收中执行垃圾回收时的内存占比,只有到了这个内存占比才会进行垃圾回收,而不是内存不足了才进行回收

      -XX:+CMSScavengeBeforRemark 在重新标记前对新生代做一次垃圾回收,防止新生代对象引用了老年代对象,在重新标记时做一些无用的查询工作。(因为若新生代对象引用老年代对象,重新标记时扫描整个堆,新生代对象对老年代做了可达性分析,所以在重新标记前清理新生代可以减轻做可达性分析时扫描堆的工做压力)

 

16.设置其他类型GC

(1)G1(Garage First)jdk9默认使用。适用于注重吞吐量和低延时的超大堆内存,会划分region,整体上用标记整理法,每个区之间是复制法

-XX:+UseG1GC 表示使用G1GC

-XX:G1HeapRegionSize= size   size设置它将堆划分为多少个大小相等的区域

-XX:MaxGCPauseMillis=time  最大stw时间,默认200ms

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值