Java体系性能测试进阶必须了解的知识点——GC日志分析

news2024/9/21 8:00:48

GC定义

GC(Garbage Collection)是垃圾收集的意思,内存处理是程序员编码容易产生问题的地方,忘记或者错误的内存回收会导致程序或系统的不稳定甚至崩溃,Java提供的GC功能可以自动监测对象是否需要进行垃圾回收。所以,Java的内存管理实际上就是对象的管理,其中包括对象的分配和释放。GC日志是分析GC相关问题的重要线索,即便是在生产服务器上,也建议开启,程序员应当学会通过相应工具理解和分析GC日志内容。

开启GC的方法

在JVM中设置参数 -verbose:gc 或-XX:+PrintGC,默认GC日志是关闭的。

GC命令其他重要的参数

-XX:+PrintGCDetails 创建更详细的GC日志,默认关闭;XX:+PrintGCTimeStamps

-XX:+PrintGCDateStamps 可用于分析GC之间的时间间隔,默认关闭,建议开启;

-Xloggc:filename 指定将GC日志输出到具体文件,默认为标准输出;

-XX:Number01GCLogtiles及-XX:UseGCLogfileRotation 控制日志文件循环,默认是0,即不作任何限制。

命令启动jar 生成gc日志

通过命令启动jar包,进行gc日志采集

java -Xms20m -Xmx20m -XX:+UseConcMarkSweepGC -XX:+PrintGC -verbose:gc -Xloggc:D:\gc.log 
-XX:+PrintGCDetails -jar  D:\lesson\new\idea\out\artifacts\memoryleak_jar\memoryleak.jar

上面的代码中d:\gc.log就是生成的gc日志,我们可以通过gc日志来查看Java程序的gc详情。

关于GC日志的分析讲解

以下面这段gc日志为例:

0.226: [GC (Allocation Failure) 0.226: [ParNew: 6144K->640K(6144K), 0.0167374 secs] 10568K->10863K(19840K), 0.0169029 secs] [Times: user=0.09 sys=0.02, real=0.02 secs]

ParNew(是新生代垃圾回收器)

6144K表示使用新生代GC前,占用的内存,->640k表示GC后占用的内存,(6144K)代表整个新生代总共大小,用时0.0167374 secs

10568K(GC前整个JVM Heap对内存的占用)->10863K(MinorGC后内存占用总量)(19840K)(整个堆的大小)0.0169029 secs(Minor GC消耗的时间)]

[Times: user=0.09 sys=0.02, real=0.02 secs] 用户空间,内核空间,real整个的时间消耗

[Full GC (Allocation Failure) 0.358: [CMS: 13695K->13346K(13696K), 0.0418278 secs] 19839K->18311K(19840K), [Metaspace: 3063K->3063K(1056768K)], 0.0419042 secs] [Times: user=0.05 sys=0.00, real=0.04 secs]

Full GC(表明是Full GC) CMS:(老年代GC)13695K(GC前多大)->13346K(GC后)(13696K)

老年代总容量 19839K(GC前整个Heap空间大小)->18311K(GC后整个Heap空间大小) (19840K) (整个Heap大小,JVM堆的大小),

[Metaspace: 3063K ->3063K (1056768K) (GC前后基本没变,空间很大)], 0.0419042 sec(GC的耗时,秒为单位)]

 [Times: user=0.05 sys=0.00, real=0.04 secs](用户空间耗时,内核空间耗时,真正的耗时时间)

我的每一篇文章都希望帮助读者解决实际工作中遇到的问题!如果文章帮到了您,劳烦点赞、收藏、转发!您的鼓励是我不断更新文章最大的动力!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1153430.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

有质更有智,最低10.88万的哪吒X有多超值?

近期,哪吒汽车可谓是存在感极高,先是官宣娜扎为品牌代言人,再是哪吒X正式上市,更有哪吒GT运动版和官改套件上线等一系列大动作,频频霸榜车圈热搜。近日,首台哪吒X于哪吒汽车嘉兴直营中心交付的消息也在朋友圈刷屏,从正式上市到首台交付,仅仅相隔两天时间,真正实现“上市即交付”…

【pdf密码】PDF没有密码,为什么不能编辑?

打开PDF文件的时候,没有提示带有密码,但是打开文件之后发现没有办法编辑PDF文件,这个是因为PDF文件设置了限制编辑,我们需要将限制取消才能够编辑文件。 那么,我们应该如何取消密码,编辑文件呢&#xff1f…

Linux系统封装ISO镜像(自动安装)

一、准备一个系统 centos7或者centos8都可以;最小化或者桌面版的都可以,自行选择 二、安装自定义镜像工具 yum -y install createrepo mkisofs openssl rsync syslinux三、挂载镜像 创建挂载点 mkdir /mnt/cdrommount /dev/sr0 /mnt/cdrom四、同步 /mnt/cdrom/ 下的文件到 …

分享一下微信小程序里怎么开店

如何在微信小程序中成功开店:从选品到运营的全方位指南 一、引言 随着微信小程序的日益普及,越来越多的人开始尝试在微信小程序中开设自己的店铺。微信小程序具有便捷、易用、即用即走等特点,使得开店门槛大大降低。本文将详细介绍如何在微…

vue-query的使用

vue-query,类似于vuex/pinia,以缓存为目的,但侧重的是对网络请求的缓存。 这是我预想的使用场景:假设在各个页面都需要发起相同的请求,去获取数据,而这种数据在一定时间内不会发生变化,那么这种…

优思学院:从西格玛计算出Cpk与不良率PPM

在品质控制的领域中,Cpk(制程能力指数)和PPM(每百万个中不良品的个数)是两个关键的指标,用来评估一个制程的稳定性和一致性。然而,这两者的计算并不简单,特别是当规格中心值与物品量…

openfeign和全局异常

我们在seata中使用openfeign调用服务的时候经常会出现一些问题 (1)在使用openfeign的时候使用到了全局异常,本来feign调用失败会触发降级异常,但是如果加上 全局异常处理器的话可能不会触发,导致降级失败 (2)服务a调用服务b的接口b(),b接口调用出错了,服务b本来应该返回异常,但…

最新ai系统ChatGPT商业运营版网站源码+支持GPT4.0/支持AI绘画+已支持OpenAI GPT全模型+国内AI全模型+绘画池系统

一、AI创作系统 SparkAi创作系统是基于OpenAI很火的ChatGPT进行开发的Ai智能问答系统和Midjourney绘画系统,支持OpenAI-GPT全模型国内AI全模型。本期针对源码系统整体测试下来非常完美,可以说SparkAi是目前国内一款的ChatGPT对接OpenAI软件系统。那么如…

GPU渲染中各个步骤的作用

MainLightShadow(主光照阴影): 通常在渲染管线中的最开始阶段进行绘制,这是因为主要光源的阴影对于场景中的物体渲染和视觉效果非常重要。 下面是一些原因,解释为什么主光照阴影往往是在最开始绘制的: 1、视觉效果的…

关闭谷歌浏览器的自动更新 详细教程

1.前往资源库找到Google文件夹 2.进入找到GoogleSoftwareUpdate.bundle 并且删除 弹出删除框 需要我们使用指纹或者锁屏密码 就可以删除了 3.打开谷歌浏览器查看是否已经不再自动更新了 发现上面提示更新失败即可 将不会再次更新 window/其他电脑关闭自动更新教程参考&#x…

MFC实现堆栈窗口:多个子界面可任意切换

1、效果 在Qt中可使用QStackedWidget控件直接拖动布置即可实现,但在MFC中并未提供类似的控件,因此需要自己简单实现。 2、实现原理 实现原理比较简单,父级对话框在显示的区域部分,通过切换子对话框即可实现。子对话框去掉边框后…

ZOC8 for Mac:超越期待的终端仿真器

在Mac上,一个优秀的终端仿真器是每位开发者和系统管理员的必备工具。ZOC8,作为一款广受好评的终端仿真器,以其强大的功能和易用性,已经在Mac用户中积累了良好的口碑。本文将为您详细介绍ZOC8的各项特性,以及为什么它会…

如何从微信视频号中提取视频链接,视频号链接获取办法?

方法1:李华面临的新挑战 让我们回到李华的故事。他是一个自身的自媒体从业者,自己有一个很好的习惯,就是将自己喜欢的内容直接保存下载来。但是,微信视频号并没有提供直接下载的功能。此时,李华又陷入了困扰。 方法2&a…

MATLAB——一维小波的多层分解

%% 学习目标:一维小波的多层分解 clear all; close all; load noissin.mat; xnoissin; [C,L]wavedec(x,3,db4); % 3层分解,使用db4小波 [cd1,cd2,cd3]detcoef(C,L,[1,2,3]); % 使用detcoef函数获取细节系数 ca3appcoef(C,L,db4,3); …

ROS常用命令及多机(TX2 与虚拟机)通信步骤

目录 ROS常用命令 常用命令 ROS多机通信步骤 虚拟机中添加镜像源 TX2中添加镜像源 ROS常用命令 rostopic list 命令查看当前系统中有哪些 topic。 rostopic info 命令查看该 topic 的信息,包括它的数据类型、发布者数量等。 rostopic hz 命令查看该 topic 的发布…

GIT文件夹上面的状态(对钩或红色感叹号)不显示,解决

换了新电脑,GIT代码上传啥的都正常,但是文件中文件图标状态不显示,搜了一下已找到解决方法,实测有效。 第一步 winr,输入regedit.exe,打开注册表 第二步 找到以下路径 “ HKEY_LOCAL_MACHINE–>SOFTWA…

1992-2021年全国各省经过矫正的夜间灯光数据(GNLD、VIIRS)

1992-2021年省市县经过矫正的夜间灯光数据(GNLD、VIIRS) 1、时间:1992-2021年3月,其中1992-2013年为年度数据,2013-2021年3月为月度数据 2、来源:DMSP、VIIRS 3、范围:31省 4、指标解释&…

如何在实践中建立持久有效的6S管理呢?

提起6S管理,很多人可能认为是老旧的概念。然而,在三一集团,整理、整顿、清扫、清洁、素养和安全这12个字被执行到极致,甚至形成了一个共识:“搞不好6S的总经理是不合格的总经理”。这是因为三一集团高层通过多年的实践…

堆栈与队列算法-以链表来实现队列

目录 堆栈与队列算法-以链表来实现队列 C代码 堆栈与队列算法-以链表来实现队列 队列除了能以数组的方式来实现外,也可以用链表来实现。在声明队列的类中,除了和队列相关的方法外,还必须有指向队列前端和队列末尾的指针,即fron…

Mac用户心目中的四款首选原型工具

Wireframe、Mockup和prototype在原型工具中有什么区别? 无论你是刚进入这个行业的UX/UI设计师,还是已经进入这个行业多年的老手,你都必须在制作原型的过程中接触或听到三个非常重要的原型术语:“wireframe(线框图)Mockup”或“pr…