理解Java GC日志
idea 在vm options处加入-XX:+PrintGCDetails,可打印GC日志。
public class ReferenceCountingGC {
public Object instance=null;
private static final int _1MB=1024*1024;
private byte[] bigSize=new byte[2*_1MB];
public static void testGC(){
ReferenceCountingGC objA=new ReferenceCountingGC();
ReferenceCountingGC objB=new ReferenceCountingGC();
objA.instance=objB;
objB.instance=objA;
objA=null;
objB=null;
System.gc();
}
public static void main(String[] args) {
testGC();
}
}
打印GC日志为:
[GC (Allocation Failure) [DefNew: 3762K->512K(4928K), 0.0044320 secs] 3762K->2609K(15872K), 0.0171251 secs] [Times: user=0.00 sys=0.00, real=0.02 secs]
[Full GC (System.gc()) [Tenured: 2097K->560K(10944K), 0.0031949 secs] 4657K->560K(15872K), [Metaspace: 2131K->2131K(4480K)], 0.0036546 secs] [Times: user=0.00 sys=0.00, real=0.00 secs]
Heap
def new generation total 4992K, used 91K [0x04800000, 0x04d60000, 0x09d50000)
eden space 4480K, 2% used [0x04800000, 0x04816d20, 0x04c60000)
from space 512K, 0% used [0x04c60000, 0x04c60000, 0x04ce0000)
to space 512K, 0% used [0x04ce0000, 0x04ce0000, 0x04d60000)
tenured generation total 10944K, used 560K [0x09d50000, 0x0a800000, 0x14800000)
the space 10944K, 5% used [0x09d50000, 0x09ddc140, 0x09ddc200, 0x0a800000)
Metaspace used 2149K, capacity 2280K, committed 2368K, reserved 4480K
——————————————————————————————————————
“[GC” 说明垃圾收集的停顿类型。
“[Full GC”说明这次GC发生了Stop-The-World。此处是调用了System.gc()所触发的收集。
“[DefNew”、“[Tenured”表示GC发生的区域。Default New Generation。
“3762K->512K(4928K)”表示GC前该内存区域已使用容量->GC后该区域已使用容量(该内存区域总容量)。
“3762K->2609K(15872K)”表示GC前java堆已使用容量->GC后java堆已使用容量(java堆总容量)。
“0.0171251 secs”表示该内存区域GC所占用的时间,单位是秒。
“[Times: user=0.00 sys=0.00, real=0.02 secs] ”表示用户态消耗的CPU时间,内核态消耗的CPU事件,操作从开始到结束所经过的墙钟时间(包括各种非运算的等待耗时)。
“tenured generation”老年代
“the space 10944K, 5% used”表示老年区的内存大小是10944K,5%被使用。
“Metaspace” Java8中,永久代已经被移除,被一个称为“元数据区”(元空间)的区域所取代。
理解Java GC日志的更多相关文章
- Java GC 日志详解(转)
Java GC日志可以通过 +PrintGCDetails开启 以ParallelGC为例 YoungGC日志解释如下(图片源地址:这里) : FullGC(图片源地址:这里): http://blo ...
- Java GC 日志详解
详见:http://blog.yemou.net/article/query/info/tytfjhfascvhzxcyt105 java GC日志可以通过 +PrintGCDetails开启 以Pa ...
- 理解CMS GC日志
本文翻译自:https://blogs.oracle.com/poonam/entry/understanding_cms_gc_logs 准备工作 JVM的GC日志的主要参数包括如下几个:-XX:+ ...
- 【GC分析】Java GC日志查看
Java中的GC有哪几种类型? 参数 描述 UseSerialGC 虚拟机运行在Client模式的默认值,打开此开关参数后, 使用Serial+Serial Old收集器组合进行垃圾收集. UsePa ...
- Java GC 日志输出分析
搜到的几篇讲GC日志的文章,学到了很多东西.但是有些错误或者不够精确的地方. 因此自己尝试着总结一下. 先写个程序,然后结合程序解释每句话的意思. 运行参数 -Xms200M -Xmx200M -Xm ...
- Java GC 日志解析
JVM 在Java应用程序优化中是不可缺少的一大重项,如何合理配置Java参数,如果验证配置参数的有效性,从GC日志中可以获得很重要的提示,以下是笔者对GC垃圾收集器默认开启的组合日志的部分的解析,希 ...
- Java GC日志查看
Java GC类型 Java中的GC有哪几种类型? 参数 描述 UseSerialGC 虚拟机运行在Client模式的默认值,打开此开关参数后, 使用Serial+Serial Old收集器组合进行垃 ...
- 深入理解 Java —— GC 机制
1. 基础知识 1.1 什么是垃圾回收? 程序的运行必然需要申请内存资源,无效的对象资源如果不及时处理就会一直占有内存资源,最终将导致内存溢出,所以对内存资源的管理非常重要. 垃圾回收就是对这些无效资 ...
- java gc日志详解
从 Full GC 信息可知,新生代可用的内存大小约为 18M,则新生代实际分配得到的内存空间约为 20M(为什么是 20M? 请继续看下面...).老年代分得的内存大小约为 42M,堆的可用内存的大 ...
随机推荐
- k8s进行与容器交互时报错:unable to upgrade connection: Unauthorized在k8s实现kubectl exec -it pod_ID sh出错解决
在创建pod时,进入pod失败 kubectl exec -it nginx-deployment-d55b94fd-xcrtg sh error检查问题,一直找不到答案,通过logs发现,同样不能实 ...
- 【问题解决方案】本地仓库删除远程库后添加到已有github仓库时仓库地址找不到的问题(github仓库SSH地址)
参考: 我参考我自己.jpg 背景: 想添加一下远程库,github主页找了半天,Google搜索了半天,都没有找到,所以这里写一个,记录一下 1-格式分析:git@github.com:用户名/仓库 ...
- HDFS学习笔记二
文章来源于:https://blog.csdn.net/xuejingfu1/article/details/52554174 文件写入staging(分阶段进行) 一个客户端的创建文件的请求并不直接 ...
- go语言从例子开始之Example4.常量
Go 支持字符.字符串.布尔和数值 常量 . package main import "fmt" import "math" const 用于声明一个常量. c ...
- 九、结构模式之装饰(Decorator)模式
装饰模式又叫包装模式,装饰模式以客户端透明的方式扩展对象的功能,是继承关系的一个替代方案.装饰模式可以在不使用创造更多的子类的情况下,将对象的功能加以扩展. 装饰模式结构图如下: 其包含的角色就分为: ...
- matlab直接运行fig文件时报错
Matlab里面所的程序都是以.m的脚本文件形式保存的,所有运行的都是m文件.所以,对于guide生成的GUI程序,打开的方式有两种: 一:打开.m文件,点击m文件上的运行按钮,会自动弹出figure ...
- 错误描述:fatal error C1010: 在查找预编译头时遇到意外的文件结尾。是否忘记了向源中添加“#include "stdafx.h"”?(转)
错误分析: 此错误发生的原因是编译器在寻找预编译指示头文件(默认#include "stdafx.h")时,文件未预期结束.没有找到预编译指示信息的头文件"stdafx. ...
- SGU438 The Glorious Karlutka River =)
传送门 sgu原来搬到cf了呀点了好几个链接才找到233 传说中的动态流(?) 反正很暴力就对了QwQ 有容量限制->拆点 对于每个点拆成入点和出点 时间限制->分层 对于每个时刻的每个石 ...
- js学习笔记-日期对象
<body> <script> var d = new Date() console.log(d) var arr = ['星期日', '星期一', '星期二', '星期三', ...
- HTTP详解教程 / HTTP 响应头信息 HTTP 响应头信息
HTTP请求头提供了关于请求,响应或者其他的发送实体的信息. 在本章节中我们将具体来介绍HTTP响应头信息.直线电机哪家好 应答头 说明 Allow 服务器支持哪些请求方法(如GET.POST等). ...