JVM之GC回收信息详解
一、-XX:+PrintGCDetails 打印GC日志
参数配置:-Xms10M -Xmx10M -XX:+PrintGCDetails -XX:+PrintGCDateStamps -XX:+PrintGCTimeStamps -Xloggc:F:\gc1.log
-Xloggc:输出到文件
2020-01-03T14:13:18.866+0800: 0.224: [GC (Allocation Failure) [PSYoungGen: 2048K->496K(2560K)] 2048K->744K(9728K), 0.0128127 secs] [Times: user=0.00 sys=0.00, real=0.01 secs]
2020-01-03T14:13:18.881+0800: 0.229: [GC (System.gc()) [PSYoungGen: 565K->496K(2560K)] 813K->752K(9728K), 0.0009625 secs] [Times: user=0.02 sys=0.00, real=0.00 secs]
2020-01-03T14:13:18.882+0800: 0.230: [Full GC (System.gc()) [PSYoungGen: 496K->0K(2560K)] [ParOldGen: 256K->675K(7168K)] 752K->675K(9728K), [Metaspace: 3460K->3460K(1056768K)], 0.0053436 secs] [Times: user=0.00 sys=0.00, real=0.01 secs]
2020-01-03T14:13:19.889+0800: 1.236: [GC (System.gc()) [PSYoungGen: 117K->128K(2560K)] 793K->803K(9728K), 0.0006856 secs] [Times: user=0.00 sys=0.00, real=0.00 secs]
2020-01-03T14:13:19.889+0800: 1.237: [Full GC (System.gc()) [PSYoungGen: 128K->0K(2560K)] [ParOldGen: 675K->696K(7168K)] 803K->696K(9728K), [Metaspace: 3475K->3475K(1056768K)], 0.0057842 secs] [Times: user=0.00 sys=0.00, real=0.01 secs]
Heap
PSYoungGen total 2560K, used 59K [0x00000000ffd00000, 0x0000000100000000, 0x0000000100000000)
eden space 2048K, 2% used [0x00000000ffd00000,0x00000000ffd0ecc0,0x00000000fff00000)
from space 512K, 0% used [0x00000000fff00000,0x00000000fff00000,0x00000000fff80000)
to space 512K, 0% used [0x00000000fff80000,0x00000000fff80000,0x0000000100000000)
ParOldGen total 7168K, used 696K [0x00000000ff600000, 0x00000000ffd00000, 0x00000000ffd00000)
object space 7168K, 9% used [0x00000000ff600000,0x00000000ff6ae138,0x00000000ffd00000)
Metaspace used 3481K, capacity 4500K, committed 4864K, reserved 1056768K
class space used 381K, capacity 388K, committed 512K, reserved 1048576K
第一行:2020-01-03T14:13:18.866+0800: 0.224: [GC (Allocation Failure) [PSYoungGen: 2048K->496K(2560K)] 2048K->744K(9728K), 0.0128127 secs] [Times: user=0.00 sys=0.00, real=0.01 secs]
GC (Allocation Failure):GC表示YoungGC年轻代垃圾回收;(Allocation Failure)表示内存分配失败;
[PSYoungGen: 2048K->496K(2560K)]:PSYoungGen表示年轻代使用的垃圾回收器是Paralle Scavenge ;2048K表示年轻代垃圾回收前内存占用大小;496K表示年轻代垃圾回收后内存占用大小;(2560K)表示年轻代总大小;
2048K->744K(9728K):2048K表示堆内存垃圾回收前内存占用大小;744K表示堆内存垃圾回收后内存占用大小;(9728K)表示堆内存总大小;
0.0128127 secs:表示YoungGC耗时,单位秒
[Times: user=0.00 sys=0.00, real=0.01 secs]:user=0.00表示用户耗时,sys=0.00表示系统耗时,real=0.01表示真实耗时,secs表示时间单位秒
第二行:2020-01-03T14:13:18.881+0800: 0.229: [GC (System.gc()) [PSYoungGen: 565K->496K(2560K)] 813K->752K(9728K), 0.0009625 secs] [Times: user=0.02 sys=0.00, real=0.00 secs]
[GC (System.gc()):表示系统显示调用gc
第三行:2020-01-03T14:13:18.882+0800: 0.230: [Full GC (System.gc()) [PSYoungGen: 496K->0K(2560K)] [ParOldGen: 256K->675K(7168K)] 752K->675K(9728K), [Metaspace: 3460K->3460K(1056768K)], 0.0053436 secs]
[Full GC (System.gc()):Full GC表示YoungGC+OldGC(年轻代垃圾回收+年老代垃圾回收)即整个JVM内存的回收(除了方法区或者元空间);System.gc()表示系统显示调用GC
[PSYoungGen: 496K->0K(2560K)]:PSYoungGen表示年轻代使用的垃圾回收器是Paralle Scavenge ;496K表示Full GC垃圾回收前内存占用大小;0K表示Full GC垃圾回收后内存占用大小(0是因为年轻代使用的是复制算法);(2560K)表示年轻代总大小;
752K->675K(9728K):752K表示Full GC垃圾回收前堆内存占用大小;675K表示Full GC垃圾回收后堆内存占用大小;(9728K)表示堆内存总大小;
ParOldGen: 256K->675K(7168K):ParOldGen表示老年代使用的垃圾回收器Parallel Old,256K表示Full GC垃圾回收前内存占用大小;675K表示Full GC垃圾回收后内存占用大小;(7168K)表示老年代总大小;
[Metaspace: 3460K->3460K(1056768K)]:Metaspace表示元空间本文使用JDK1.8,3460K:表示Full GC垃圾回收前Metaspace占用大小,3460K表示Full GC垃圾回收后Metaspace占用大小;(1056768K)表示Metaspace总大小。
Full GC分析下可以得出结论:
新生代变化:496k-0L=496K 新生代减少了496k
老年代变化:256k-675k=-419k(老年代增加了419k)
Heap区变化:752k-675k=77K 整个堆减少了 77k
496k – 77K =419K,说明该次共有419k内存从年轻代移到了老年代,可以看出来数量不少,说明大部分对象的生命周期较长。由于Full GC会引发stop the word ,所以我们要尽量避免Full GC的发生,让对象尽可能的在老年代多呆会,所以这里可以增加老年轻代的大小。
第五行:
Heap
PSYoungGen total 2560K, used 59K [0x00000000ffd00000, 0x0000000100000000, 0x0000000100000000)
eden space 2048K, 2% used [0x00000000ffd00000,0x00000000ffd0ecc0,0x00000000fff00000)
from space 512K, 0% used [0x00000000fff00000,0x00000000fff00000,0x00000000fff80000)
to space 512K, 0% used [0x00000000fff80000,0x00000000fff80000,0x0000000100000000)
ParOldGen total 7168K, used 696K [0x00000000ff600000, 0x00000000ffd00000, 0x00000000ffd00000)
object space 7168K, 9% used [0x00000000ff600000,0x00000000ff6ae138,0x00000000ffd00000)
Metaspace used 3481K, capacity 4500K, committed 4864K, reserved 1056768K
class space used 381K, capacity 388K, committed 512K, reserved 1048576K
PSYoungGen total 2560K, used 59K:total 年轻代占用的总内存大小2560K,used:表示当前使用量
eden space 2048K, 2% used:年轻代的eden区占用的总内存大小2048K,used:已经使用2%
from space 512K, 0% used:年轻代的 from s1区占用的总内存大小512K,used:已经使用0%
to space 512K, 0% used:年轻代的 from s2区占用的总内存大小512K,used:已经使用0%
ParOldGen total 7168K:老年代的总内存大小
object space 7168K, 9% used:老年已使用9%

-XX:NewRatio=2:年轻代与老年代的比值1:2, 但是根据实际数据显然年轻代没有占到整个堆的三分之一,很是费解?不知这种误差是否合理,在这里不吝赐教,求大神指点迷津。
JVM之GC回收信息详解的更多相关文章
- JVM的垃圾回收机制详解和调优
JVM的垃圾回收机制详解和调优 gc即垃圾收集机制是指jvm用于释放那些不再使用的对象所占用的内存.java语言并不要求jvm有gc,也没有规定gc如何工作.不过常用的jvm都有gc,而且大多数gc都 ...
- JVM、Gc工作机制详解
JVM主要包括四个部分: 类加载器(ClassLoad) 执行引擎 内存区: 本地方法接口:类似于jni调本地native方法 内存区包括四个部分: 1.方法区:包含了静态变量.常量池.构造函数等 2 ...
- 一张图看懂JVM之垃圾回收算法详解
导读 ...
- java面试题之----JVM架构和GC垃圾回收机制详解
JVM架构和GC垃圾回收机制详解 jvm,jre,jdk三者之间的关系 JRE (Java Run Environment):JRE包含了java底层的类库,该类库是由c/c++编写实现的 JDK ( ...
- JVM架构和GC垃圾回收机制详解
JVM架构图分析 下图:参考网络+书籍,如有侵权请见谅 (想了解Hadoop内存溢出请看:Hadoop内存溢出(OOM)分类.参数调优化) JVM被分为三个主要的子系统 (1)类加载器子系统(2)运行 ...
- 转 Java虚拟机5:Java垃圾回收(GC)机制详解
转 Java虚拟机5:Java垃圾回收(GC)机制详解 Java虚拟机5:Java垃圾回收(GC)机制详解 哪些内存需要回收? 哪些内存需要回收是垃圾回收机制第一个要考虑的问题,所谓“要回收的垃圾”无 ...
- GC垃圾回收机制详解
JVM堆相关知识 为什么先说JVM堆? JVM的堆是Java对象的活动空间,程序中的类的对象从中分配空间,其存储着正在运行着的应用程序用到的所有对象.这些对象的建立方式就是那些new一类的操作 ...
- PHP的垃圾回收机制详解
原文:PHP的垃圾回收机制详解 最近由于使用php编写了一个脚本,模拟实现了一个守护进程,因此需要深入理解php中的垃圾回收机制.本文参考了PHP手册. 在理解PHP垃圾回收机制(GC)之前,先了解一 ...
- redis.conf配置信息详解
redis.conf配置信息详解 配置文件 # Redis 配置文件 # 当配置中需要配置内存大小时,可以使用 1k, 5GB, 4M 等类似的格式,其转换方式如下(不区分大小写) # # 1k =& ...
随机推荐
- offsetheight 和clientheight、scrollheight、scrollTop区别
clientHeight:元素客户区的大小,指的是元素内容及其边框所占据的空间大小(经过实践取出来的大多是视口大小) scrollHeight: 滚动大小,指的是包含滚动内容的元素大小(元素内容的总高 ...
- HZOJ 那一天她离我而去
一个数据水到不行的题,各路大佬用各种方法A掉了这个题(比如A*,最短路,dfs……). 这里只说一下我的暴力和被碾压的正解. 暴力AC系列: 要找过1点的最小环,那么这个环可以拆成两部分,与1相连的两 ...
- ODT 珂朵莉树 入门
#include<iostream> #include<stdio.h> #include<string.h> #include<algorithm> ...
- [kuangbin带你飞]专题九 连通图B - Network UVA - 315
判断割点的性质: 如果点y满足 low[y]>=dfn[x] 且不是根节点 或者是根节点,满足上述式子的有两个及其以上. 就是割点 如果是起点,那么至少需要两个子节点满足上述条件,因为它是根节点 ...
- CODE FESTIVAL 2017 qual A B fLIP(补题)
平时没见过这样的题目,看到后很懵逼.没想到. 思路:按下按钮的顺序并不影响结果,一个按钮要么按一次,要么不按,按多了也没用,比如:按3次和按1次没啥区别. 假设这是个M * N的矩阵,我们已经按下了k ...
- History和Location
Location 对象属性属性 描述hash 设置或返回从井号 (#) 开始的 URL(锚).host 设置或返回主机名和当前 URL 的端口号.hostname 设置或返回当前 URL 的主机名.h ...
- HTML5中Js多线程编程
Web Worker Web Worker是HTML5提出的新标准,为 JavaScript 创造多线程环境,允许主线程创建 Worker 线程,将一些任务分配给后者运行.在主线程运行的同时,Work ...
- 【GYM101409】2010-2011 ACM-ICPC, NEERC, Western Subregional Contest
A-Area and Circumference 题目大意:在平面上给出$N$个三角形,问周长和面积比的最大值. #include <iostream> #include <algo ...
- 洛谷——P1111修复公路(并查集)
题目背景 AA地区在地震过后,连接所有村庄的公路都造成了损坏而无法通车.政府派人修复这些公路. 题目描述 给出A地区的村庄数NN,和公路数MM,公路是双向的.并告诉你每条公路的连着哪两个村庄,并告诉你 ...
- WPF实现软键盘
wpf 实现一个软键盘, 先发个图: 工作有需要实现一个软键盘,本来想用windows自带的软键盘凑合凑合得了,又觉得那个软键盘太大了,所以自己实现了一个. 说一下实现的思路,其实没什么思路 界面就是 ...