idea本地跑如何看gc日志_不可思议,竟然还有人不会查看GC垃圾回收日志?
日志的重要性,不需要过多强调了。通过日志,我们可以发现程序可能有内存(泄露)问题。本文从案例出发,具体介绍这些日志信息,以期帮助大家更好地了解垃圾回收的运行情况。
还是先上图,看看本文的主要内容:
我们先来看个案例,代码如下:/**
* 打印垃圾回收日志案例
* 参数设置: -XX:+PrintGCDetails
* @author 田维常
* @version 1.0
* @date 2020/11/9 8:22 */
public class PrintGCDetailsDemo {
public static void main(String[] args) {
System.out.println("Hello world");
}
}
启动参数设置:
XX:+PrintGCDetails
运行main方法,输出Hello world
Heap
PSYoungGen total 38400K,used 4670K [0x00000000d5f00000, 0x00000000d8980000, 0x0000000100000000)
eden space 33280K,14% used [0x00000000d5f00000,0x00000000d638fb98,0x00000000d7f80000)
from space 5120K,0% used [0x00000000d8480000,0x00000000d8480000,0x00000000d8980000)
to space 5120K,0% used [0x00000000d7f80000,0x00000000d7f80000,0x00000000d8480000)
ParOldGen total 87552K,used 0K [0x0000000081c00000, 0x0000000087180000, 0x00000000d5f00000)
object space 87552K,0% used [0x0000000081c00000,0x0000000081c00000,0x0000000087180000)
Metaspace used 3525K,capacity 4498K, committed 4864K, reserved 1056768K
class space used 388K,capacity 390K, committed 512K, reserved 1048576K
关于GC日志的参数-XX:+PrintGC 输出GC日志
-XX:+PrintGCDetails 输出GC的详细日志
-XX:+PrintGCTimeStamps 输出GC的时间戳(以基准时间的形式)
-XX:+PrintGCDateStamps 输出GC的时间戳(以日期的形式,如 2013-05-04T21:53:59.234+0800)
-XX:+PrintHeapAtGC 在进行GC的前后打印出堆的信息
-Xloggc:../logs/gc.log 日志文件的输出路径
参数案例
-XX:+PrintGCDetails-XX:-UseAdaptiveSizePolicy-XX:SurvivorRatio=8-XX:NewSize=10M -XX:MaxNewSize=10M
参数解释:-XX:+PrintGCDetails 启用日志
-XX:-UseAdaptiveSizePolicy 禁用动态调整,使SurvivorRatio可以起作用
-XX:SurvivorRatio=8设置Eden:Survivior=8:1
-XX:NewSize=10M -XX:MaxNewSize=10M设置整个新生代的大小为10M
写了一个Spring Boot项目,非常简单的项目,里面写了一个controllerpackage com.tian.my_code.controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.ArrayList;
import java.util.List;
/**
* @author 田维常
* @version 1.0
* @date 2020/11/8 15:46 */
@RestController
public class GCController {
List strings = new ArrayList<>();
@GetMapping("/gc")
public String addObject() {
System.out.println("-------gc-------");
for (int i = 0; i
try {
Thread.sleep(20);
} catch (InterruptedException e) {
e.printStackTrace();
}
int [] a=new int[500000];
strings.add(a);
}
return "ok";
}
}
这段代码其实是想后面演示OOM用的,都行吧,这里先用他来看看GC垃圾回收日志。
在IDEA中设置
输出结果
抓出一段来聊聊
GC (minor )日志
[GC (Allocation Failure)[PSYoungGen: 8525K->352K(9216K)] 98695K->98486K(130048K),0.0092873 secs] [Times: user=0.00 sys=0.00, real=0.01 secs](Allocation Failure):表明本次引起GC的原因是因为在年轻代中没有足够的空间能够存储新的数据了。
PSYoungGen:表示是GC类型
8525K:YoungGC前新生代内存占用
352K:YoungGC新生代内存占用
9216K:新生代总共大小
98695K:YoungGC前JVM内存占用
98486K:YoungGC后JVM内存使用
130048K:JVM堆总大小
0.0092873 secs:YoungGC耗时
user=0.00:YoungGC用户耗时
sys=0.00:YoungGC系统耗时
real=0.01:YoungGC实际耗时(这里居然四舍五入了)
Full GC 日志
[Full GC (Ergonomics)[PSYoungGen: 8051K->7817K(9216K)][ParOldGen: 244969K->244969K(245760K)] 253020K->252786K(254976K),[Metaspace: 29386K->29386K(1077248K)], 0.0525381 secs][Times: user=0.13 sys=0.00, real=0.05 secs]PSYoungGen: 8051K->7817K(9216K):新生代区GC前后和总大小
ParOldGen: 244969K->244969K(245760K):老年代GC前后和大小。
253020K->252786K(254976K):堆GC前后内存占用情况。
Metaspace: 29386K->29386K(1077248K):元空间GC前后和总大小
后面那几项和上面一样
GC垃圾回收日志就是这么简单么~蓝(nan)不蓝(nan)?
idea本地跑如何看gc日志_不可思议,竟然还有人不会查看GC垃圾回收日志?相关推荐
- 想知道垃圾回收暂停的过程中发生了什么吗?查查垃圾回收日志就知道了!
\ 关键点 \ 垃圾回收日志中包括着一些关键性能指标: \ 要做一次正确的垃圾回收分析需要收集许多数据,所以好的工具是非常必要的: \ 除了垃圾回收之外还有很多事件都可能会让应用程序暂停: \ 让你的 ...
- 万字长文教你看懂java G1垃圾回收日志
文章目录 一.如何在idea打印G1日志 二.G1基础参数 三.G1新生代收集 1. 四个关键信息 2. 列出了新生代收集中并行收集的详细过程 3.列出了新生代GC中的一些任务: 4.包含一些扩展功能 ...
- 一篇文章教你弄懂java CMS垃圾回收日志
文章目录 一.CMS垃圾回收器介绍 二.CMS JVM运行参数 三.CMS收集器运行过程 1.初始标记(CMS initial mark) 2.并发标记(CMS concurrent mark) 3. ...
- Java垃圾回收日志解析
1.开启垃圾回收日志 在运行一个java程序时可以在命令行中加入相应的JVM垃圾回收参数,获取程序运行时详细的垃圾回收日志信息.以下是一些大概的参数: -XX:+PrintGC与-verbose:gc ...
- idea本地跑如何看gc日志_线上故障如何快速排查?来看这套技巧大全
简介:有哪些常见的线上故障?如何快速定位问题?本文详细总结工作中的经验,从服务器.Java应用.数据库.Redis.网络和业务六个层面分享线上故障排查的思路和技巧.较长,同学们可收藏后再看. 前言 线 ...
- idea本地跑如何看gc日志_牛逼了!用 IDEA 扒出了开源组件导致FGC的原因
某天上午收到最近发布的一个服务频繁FGC的告警,这个服务只是给公司内部相关人员使用的,并非给互联网用户提供服务的系统.而且功能也比较简单,就是查看一些统计信息.报表数据.数据导出Excel等,访问量非 ...
- 如何linux查看mysql目录下日志_测试人员如何在linux服务器中查询mysql日志?
测试工程师在测试软件的过程中,流程往往是先接口测试,接着就是功能性测试.在做功能性测试的时候,往往有这么一个工作场景,就是出现错误后,我们怎么快速排除数据库报错. 举例某个电商网站,当我们文本框中输入 ...
- java jvm垃圾回收算法_深入理解JVM虚拟机2:JVM垃圾回收基本原理和算法
本文转自互联网,侵删 本系列文章将整理到我在GitHub上的<Java面试指南>仓库,更多精彩内容请到我的仓库里查看 喜欢的话麻烦点下Star哈 文章将同步到我的个人博客: www.how ...
- G1垃圾回收日志分析
标准 gc 日志 使用G1垃圾回收器最难的地方是读懂回收日志.G1回收虽然也是分代的,但是打印出来的日志却不像其他回收器那样明显.所以需要好好配置JVM参数才行.先看下面一段日志,这段日志是通过配置好 ...
最新文章
- 随机一段字符串,浏览器点击复制
- rsyslog+loganalyzer+evtsys搭建集中式监控系统
- SQL语句的执行过程
- 请求的转发:RequestDispatcher对象处理请求的两个方法--forward和include
- 【随笔】深度学习之美——杨家有女初长成,养在深闺人未识
- springboot集成邮箱功能
- 机器人学习--ROS/AMCL实现初始化粒子撒满整张地图和分步收敛
- 内存分配方式以及堆和栈的区别
- Sqlserver2008相关配置问题
- 想要学习C++,到底能从事哪种行业?
- txt简谱制作器上线(个人java程序)
- Apple EDI X12 业务报文解析(一)—— 850采购订单
- Maven传递依赖无法引入问题(The POM for xxx is invalid)
- 史上最全零基础学习java干货!千万别错过!
- wi-fidns服务器未响应,192.168.31.1登录界面
- 发布下今天学习内容--CentOS7安装Oracle 11gR2 图文详解
- 如何制作Android语音机器人
- php剪切透明圆,php把图片处理成圆形透明的图片,做圆形透明头像,圆形头像_编程资料分享...
- 太原市山大附中2021年高考成绩查询,太原高中排名及分数线,2021太原市高中排名榜最新...
- 云原生技术赋能联邦学习
热门文章
- 基于struts2和hibernate的登录和注册功能——完整实例
- log4j 日志限制大小 拆分成30个 不按日期分日志 按大小拆分 按日期产生...
- SCVMM2012 SP1 之虚拟机模板的创建
- ACL-文件访问控制列表
- centos 调整系统时间
- (linux)查看及修改文件权限以及相关
- VM结构、GC工作机制详解
- Python 闭包相关之late binding机制
- 洛谷 P1865 A % B Problem[筛素数/前缀和思想/区间质数个数]
- Mysql日期时间Extract函数介绍