java的gc日志分析
来源:互联网 发布:graph cut算法原理 编辑:程序博客网 时间:2024/05/19 13:15
示例1:public class Test {public static void main(String[] args) {testAllocation();}private static final int _1MB = 1024 * 1024;public static void testAllocation() {byte[] allocation1, allocation2, allocation3, allocation4;allocation1 = new byte[2 * _1MB];allocation2 = new byte[2 * _1MB];allocation3 = new byte[2 * _1MB];allocation4 = new byte[4 * _1MB];}}
gc日志如下:
0.098: [GC (Allocation Failure) [PSYoungGen: 947K->496K(2560K)] 7091K->6776K(9728K), 0.0011675 secs] [Times: user=0.00 sys=0.00, real=0.00 secs]
0.099: [GC (Allocation Failure) [PSYoungGen: 496K->496K(2560K)] 6776K->6792K(9728K), 0.0004304 secs] [Times: user=0.00 sys=0.00, real=0.00 secs]
0.100: [Full GC (Allocation Failure) [PSYoungGen: 496K->0K(2560K)] [ParOldGen: 6296K->6736K(7168K)] 6792K->6736K(9728K), [Metaspace: 2662K->2662K(1056768K)], 0.0033613 secs] [Times: user=0.00 sys=0.00, real=0.00 secs]
0.103: [GC (Allocation Failure) [PSYoungGen: 0K->0K(2560K)] 6736K->6736K(9728K), 0.0001989 secs] [Times: user=0.00 sys=0.00, real=0.00 secs]
0.103: [Full GC (Allocation Failure) [PSYoungGen: 0K->0K(2560K)] [ParOldGen: 6736K->6724K(7168K)] 6736K->6724K(9728K), [Metaspace: 2662K->2662K(1056768K)], 0.0036397 secs] [Times: user=0.00 sys=0.00, real=0.00 secs]
Heap
PSYoungGen total 2560K, used 82K [0x00000000ffd00000, 0x0000000100000000, 0x0000000100000000)
eden space 2048K, 4% used [0x00000000ffd00000,0x00000000ffd14848,0x00000000fff00000)
from space 512K, 0% used [0x00000000fff00000,0x00000000fff00000,0x00000000fff80000)
to space 512K, 0% used [0x00000000fff80000,0x00000000fff80000,0x0000000100000000)
ParOldGen total 7168K, used 6724K [0x00000000ff600000, 0x00000000ffd00000, 0x00000000ffd00000)
object space 7168K, 93% used [0x00000000ff600000,0x00000000ffc91120,0x00000000ffd00000)
Metaspace used 2694K, capacity 4486K, committed 4864K, reserved 1056768K
class space used 290K, capacity 386K, committed 512K, reserved 1048576K
FULLGC发生是因为年老代或永久代占用内存过高,需通过gc回收内存,当然FullGC后仍然无法满足内存需求,就会报内存溢出
第一次fullGC,年老代gc前占用量为6296K(87%)到gc后占用量6736K(93%),此时堆gc前占用量6792K(69%)到gc后占用量6736K(69%)
,另外第一次年轻代回收了496K,年老代增加440K,所以堆增加496-40=56K
第二次fullGC,年老代gc前占用量为6736K(93%)到gc后占用量6724K(93%),此时堆gc前占用量6736K(69%)到gc后占用量6724K(69%)
,另外第二次年轻代回收了0K,年老代回收12K,所以堆回收12K
示例2:import java.util.ArrayList;import java.util.List;public class Test { public static void main(String[] args) { //testAllocation(); List<String> list = new ArrayList<String>(); while(true){ list.add("hello"); } }}
gc日志如下:
0.099: [GC (Allocation Failure) [PSYoungGen: 1718K->485K(2560K)] 1718K->897K(9728K), 0.0007919 secs] [Times: user=0.00 sys=0.00, real=0.00 secs]
0.106: [Full GC (Ergonomics) [PSYoungGen: 2505K->0K(2560K)] [ParOldGen: 7094K->3756K(7168K)] 9600K->3756K(9728K), [Metaspace: 2662K->2662K(1056768K)], 0.0187327 secs] [Times: user=0.02 sys=0.00, real=0.02 secs]
0.125: [GC (Allocation Failure) [PSYoungGen: 0K->0K(2560K)] 3756K->3756K(9728K), 0.0002094 secs] [Times: user=0.00 sys=0.00, real=0.00 secs]
0.125: [Full GC (Allocation Failure) [PSYoungGen: 0K->0K(2560K)] [ParOldGen: 3756K->3745K(7168K)] 3756K->3745K(9728K), [Metaspace: 2662K->2662K(1056768K)], 0.0186179 secs] [Times: user=0.02 sys=0.00, real=0.02 secs]
Heap
PSYoungGen total 2560K, used 81K [0x00000000ffd00000, 0x0000000100000000, 0x0000000100000000)
eden space 2048K, 3% used [0x00000000ffd00000,0x00000000ffd146a0,0x00000000fff00000)
from space 512K, 0% used [0x00000000fff80000,0x00000000fff80000,0x0000000100000000)
to space 512K, 0% used [0x00000000fff00000,0x00000000fff00000,0x00000000fff80000)
ParOldGen total 7168K, used 3745K [0x00000000ff600000, 0x00000000ffd00000, 0x00000000ffd00000)
object space 7168K, 52% used [0x00000000ff600000,0x00000000ff9a8458,0x00000000ffd00000)
Metaspace used 2694K, capacity 4486K, committed 4864K, reserved 1056768K
class space used 289K, capacity 386K, committed 512K, reserved 1048576K
- java的gc日志分析
- Java GC 日志分析
- Java GC 日志分析
- Java GC日志分析
- Java GC CMS 日志分析
- jvm 的GC日志分析
- jvm的GC日志分析
- jvm的GC日志分析
- JVM的GC日志分析
- jvm的GC日志分析
- jvm的GC日志分析
- GC日志的可视化分析
- GC日志的格式分析
- 理解Java的GC日志
- 理解Java的GC日志
- Java 性能优化 - Websphere GC日志分析
- Java GC 日志分析秒懂!
- 一次Full GC 过程的日志分析
- [C++模板技术] 类型映射为类型
- Hive Shell 常用操作
- 如何调用父类的构造函数
- iOS程序猿之后台定位
- RabbitMq应用实践一(报文)
- java的gc日志分析
- 积累
- 做一个软件项目使用到的工具
- vector的reserve和resize
- JAVA8 Function、Consumer、Predicate、Supplier接口
- 关于java.lang.OutOfMemoryError: Java heap space的解决方案
- 129. Sum Root to Leaf Numbers
- 关于Java Web 使用JavaMail创建邮件和发送邮件
- 递推专题(一)HDU2044——2050