JVM系列笔GC与调优2.md

了解HotSpot常用命令行参数

-标准 所有版本支持
-X 非标准 特定版本支持
-XX 不稳定 下个版本可能会取消

常见和本文中可能用到的参数记录一下,具体垃圾回收器的参数后续调优的详细说明。

参数说明
-Xmx最大可用内存
-Xms初始内存,一般和-Xmx相同,避免重新分配
-Xmn年轻代大小,JVM内存=年轻代+老年代大小+永久代(一般64M)
-XX:+PrintFlagsInitial打印默认参数值
-XX:+PrintFlagsFinal打印最终参数值
-XX:+PrintGC
-XX:+PrintGCDetails
-XX:+PrintGCTimeStamps打印GC情况、GC详细日志、GC日志时间戳
常见垃圾回收器组合参数设定:(1.8)

如何查看JVM默认的垃圾回收器?

  1. java -XX:+PrintCommandLineFlags -version

[图片上传失败...(image-6d328d-1648986139688)]

  1. 通过GC日志来辨别是何种垃圾回收器

常见垃圾回收器组合参数设定:(1.8版本的)

>1\. ​	-XX:+UseSerialGC = Serial New (DefNew) + Serial Old		小型程序使用,默认情况下不会是这种选项,HotSpot会根据计算及配置和JDK版本自动选择收集器
>2\. ​	-XX:+UseParNewGC = ParNew + SerialOld  这个组合已经很少用(在某些版本中已经废弃)
>3\. ​	-XX:+UseConc(urrent)MarkSweepGC = ParNew + CMS + Serial Old
>4\. ​	-XX:+UseParallelGC = Parallel Scavenge + Parallel Old (1.8默认) 【PS + SerialOld】
>5\. ​	-XX:+UseParallelOldGC = Parallel Scavenge + Parallel Old
>6\. ​	-XX:+UseG1GC = G1

PS的GC日志详解

每一种垃圾回收器的日志是不一样。这里提供一个样例来详细解释PS的GC日志。

public class HelloGC{
    public static void main(String[] args){
        System.out.println("HelloGC!");
        List list = new ArrayList();
        for(;;){
            // 死循环中每次分配1M大小的数组,存放在list中,JVM内存不足的时候会产生GC
            byte[] b = new byte[1024*1024];
            list.add(b);
        }   
    }
}

编译后启动命令:java -Xmn10M -Xms40M -Xmx60M -XX:+PrintCommandLineFlags -XX:+PrintGC -XX:+UseParallelGC HelloGC

这里设置了最大内存为60M,初始内存为40M,新生代的内存为10M,使用PS垃圾回收器,并打印GC的回收情况。程序运行很快就会产生GC日志。

回收的日志情况:

[图片上传失败...(image-3c8f14-1648986139687)]

HeapDump情况,0x000xxxx内存地址指的是:起始地址、使用空间结束地址、整体空间结束地址;
[图片上传失败...(image-fee8c9-1648986139687)]

在此我向大家推荐一个架构学习交流圈。交流学习伪鑫:539413949(里面有大量的面试题及答案)里面会分享一些资深架构师录制的视频录像:有Spring,MyBatis,Netty源码分析,高并发、高性能、分布式、微服务架构的原理,JVM性能优化、分布式架构等这些成为架构师必备的知识体系。还能领取免费的学习资源,目前受益良多

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值