JVM 常用参数

理解JVM关键参数配置
本文介绍了JVM的常用参数,包括-Dfile.encoding、-XX:+PrintGCDetails、-XX:+UseConcMarkSweepGC等,涉及内存管理、垃圾收集、日志输出等方面,帮助优化Java应用性能。

查询JVM参数默认值:java -XX:+PrintFlagsFinal -version | grep 参数名称如 PrintGCDetails

1.-Dfile.encoding 指java文件编码 UTF-8。

2.-Dsun.jnu.encoding 操作系统的默认编码 UTF-8。

3.-Djava.io.tmpdir 临时文件地址 /tmp。

4.-Djava.net.preferIPv6Addresses 支持ipv6, false。

5.-XX:+DisableExplicitGC 禁止代码中调用GC例如:System.gc();

6.-XX:+PrintGCDetails 打印GC详细日志。

7.-XX:+PrintHeapAtGC 每次GC后都打印堆信息。

8.-XX:+PrintTenuringDistribution 打印对象年龄,即经历几次垃圾收集。

9.-XX:+UseConcMarkSweepGC 使用并发收集器,如CMS(标记清除)。

10.-XX:+PrintGCTimeStamps GC日志中打印时间戳(jvm启动时间到打印时的毫秒数)。

11.-XX:+PrintGCDateStamps GC日志中打印时间戳(服务器时间戳)。

12.-XX:CMSFullGCsBeforeCompaction=0 执行多少次FULL GC 执行才会对full gc进行压缩。

13.-XX:+UseCMSCompactAtFullCollection 使用并发收集器时,开启对full gc的压缩, 默认true。

14.-XX:CMSInitiatingOccupancyFraction=80 当老年代达到多少百分比执行full gc, 默认为-1,计算公式如下

代码块

void ConcurrentMarkSweepGeneration::init_initiating_occupancy(intx io, uintx tr) {
      assert(io <= 100 && tr <= 100, "Check the arguments");
      if (io >= 0) {
        _initiating_occupancy = (double)io / 100.0;
      } else {
        _initiating_occupancy = ((100 - MinHeapFreeRatio) +
                                 (double)(tr * MinHeapFreeRatio) / 100.0)
                                / 100.0;
      }
    }

15.-Xmn512m 年轻代大小

16.-XX:SurvivorRatio=8 年轻代survivo区域的比例80%与eden区20%

​        年轻代分成1个Eden Space和2个Suvivor Space(命名为A和B)。当对象在堆创建时,将进入年轻代的Eden Space。垃圾回收器进行垃圾回收时,扫描Eden Space和A Suvivor Space,如果对象仍然存活,则复制到B Suvivor Space,如果B Suvivor Space已经满,则复制到Old Gen。同时,在扫描Suvivor Space时,如果对象已经经过了几次的扫描仍然存活,JVM认为其为一个持久化对象,则将其移到Old Gen。扫描完毕后,JVM将Eden Space和A Suvivor Space清空,然后交换A和B的角色(即下次垃圾回收时会扫描Eden Space和B Suvivor Space。这么做主要是为了减少内存碎片的产生。

17.-XX:PermSize=256m 非堆内存的初始值,即方法区、常量区,存储类信息等。

18.-XX:MaxPermSize=256m 非堆内存的最大值。

19.-XX:+HeapDumpOnOutOfMemoryError 内存溢出时dump堆信息。

20.-XX:ReservedCodeCacheSize=128m 代码编译时的缓存大小。

21.-XX:InitialCodeCacheSize=128m 代码编译时缓存初始化大小。

22.-Xms4g jvm的最小内存

23.-Xmx6g jvm的最大内存

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值