java gc的日志在哪里看?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java gc的日志在哪里看?相关的知识,希望对你有一定的参考价值。
参考技术A -verbose.gc开关可显示gc的操作内容。打开它,可以显示最忙和最空闲收集行为发生的时间、收集前后的内存大小、收集需要的时间等。打开- xx:+ printgcdetails开关,可以详细了解gc中的变化。打开-XX: + PrintGCTimeStamps开关,可以了解这些垃圾收集发生的时间,自jvm启动以后以秒计量。最后,通过-xx: + PrintHeapAtGC开关了解堆的更详细的信息。为了了解新域的情况,可以通过-XX:=PrintTenuringDistribution开关了解获得使用期的对象权。参考资料:http://www.javaeye.com/topic/244277
本回答被提问者采纳 参考技术B 要设置一下jvm的参数才能看到关于GC的一些参数
-verbose.gc开关可显示GC的操作内容。打开它,可以显示最忙和最空闲收集行为发生的时间、收集前后的内存大小、收集需要的时间等。打开-xx:+ printgcdetails开关,可以详细了解GC中的变化。打开-XX: + PrintGCTimeStamps开关,可以了解这些垃圾收集发生的时间,自JVM启动以后以秒计量。最后,通过-xx: + PrintHeapAtGC开关了解堆的更详细的信息。为了了解新域的情况,可以通过-XX:=PrintTenuringDistribution开关了解获得使用期的对象权。
参考资料:http://hi.baidu.com/zhizhesky/blog/item/b4b6798b20e65f1ec9fc7ace.html
Java 虚拟机原理垃圾回收算法 ( 设置 JVM 命令参数输出 GC 日志 | GC 日志输出示例 | GC 日志分析 )
一、设置 JVM 命令参数输出 GC 日志
在 IntelliJ IDEA 的启动参数中设置
-XX:+PrintGCDetails
Java 虚拟机参数 , 当运行 Java 程序时 , 会在控制台打印 GC 回收相关信息 ;
其它的 Java 虚拟机常用命令参数参考 : https://blog.csdn.net/yangwei234/article/details/82977716
选择 IntelliJ IDEA 中 , 运行程序 下拉菜单 中的 " Edit Configurations… " 选项 ;
在 VM options 输入框中 , 输入 -XX:+PrintGCDetails
选项 , 这是给 Java 虚拟机设置的参数 ;
二、GC 日志示例
运行如下代码 :
public class Main {
public static void main(String[] args) {
Main main = new Main();
main = null;
System.gc();
}
}
命令行输出的 GC 日志 :
[GC (System.gc()) [PSYoungGen: 7895K->744K(153088K)] 7895K->752K(502784K), 0.0125267 secs] [Times: user=0.00 sys=0.00, real=0.03 secs]
[Full GC (System.gc()) [PSYoungGen: 744K->0K(153088K)] [ParOldGen: 8K->593K(349696K)] 752K->593K(502784K), [Metaspace: 3012K->3012K(1056768K)], 0.0039947 secs] [Times: user=0.00 sys=0.00, real=0.00 secs]
Heap
PSYoungGen total 153088K, used 3947K [0x0000000715b80000, 0x0000000720600000, 0x00000007c0000000)
eden space 131584K, 3% used [0x0000000715b80000,0x0000000715f5af98,0x000000071dc00000)
from space 21504K, 0% used [0x000000071dc00000,0x000000071dc00000,0x000000071f100000)
to space 21504K, 0% used [0x000000071f100000,0x000000071f100000,0x0000000720600000)
ParOldGen total 349696K, used 593K [0x00000005c1200000, 0x00000005d6780000, 0x0000000715b80000)
object space 349696K, 0% used [0x00000005c1200000,0x00000005c1294520,0x00000005d6780000)
Metaspace used 3042K, capacity 4496K, committed 4864K, reserved 1056768K
class space used 330K, capacity 388K, committed 512K, reserved 1048576K
三、GC 日志分析
[GC (System.gc()) [PSYoungGen: 7895K->744K(153088K)] 7895K->752K(502784K), 0.0125267 secs] [Times: user=0.00 sys=0.00, real=0.03 secs]
GC (System.gc()) :
GC (System.gc())
表示是开发者手动调用了 System.gc()
方法 ;
[PSYoungGen: 7895K->744K(153088K)] :
PSYoungGen
, 其中 PS 是 Parallel Seavenge 垃圾回收器 , YoungGen 是年轻代 ;
7895K->744K 表示垃圾回收 , 从占用 7895K 内存 , 变为占用 744K 内存 ;
153088K 表示年轻代 内存大小 ;
[Times: user=0.00 sys=0.00, real=0.03 secs] :
Times 表示本次垃圾回收基本耗时 ;
[Full GC (System.gc()) [PSYoungGen: 744K->0K(153088K)] [ParOldGen: 8K->593K(349696K)] 752K->593K(502784K), [Metaspace: 3012K->3012K(1056768K)], 0.0039947 secs] [Times: user=0.00 sys=0.00, real=0.00 secs]
[ParOldGen: 8K->593K(349696K)] :
Par 表示 Parallel 垃圾回收器 , OldGen 表示老年代 ;
[Times: user=0.00 sys=0.00, real=0.00 secs] :
Times 表示本次垃圾回收基本耗时 ;
PSYoungGen total 153088K, used 3947K [0x0000000715b80000, 0x0000000720600000, 0x00000007c0000000)
eden space 131584K, 3% used [0x0000000715b80000,0x0000000715f5af98,0x000000071dc00000)
from space 21504K, 0% used [0x000000071dc00000,0x000000071dc00000,0x000000071f100000)
to space 21504K, 0% used [0x000000071f100000,0x000000071f100000,0x0000000720600000)
第
1
1
1 行 PSYoungGen total 153088K, used 3947K [0x0000000715b80000, 0x0000000720600000, 0x00000007c0000000)
表示年轻代内存空间总大小 , 使用了多少 ;
第
2
2
2 行 eden space 131584K, 3% used [0x0000000715b80000,0x0000000715f5af98,0x000000071dc00000)
表示 Eden 区大小 , 以及使用情况 ;
第
3
3
3 行 from space 21504K, 0% used [0x000000071dc00000,0x000000071dc00000,0x000000071f100000)
表示 From 区大小 , 以及使用情况 ;
第
4
4
4 行 to space 21504K, 0% used [0x000000071f100000,0x000000071f100000,0x0000000720600000)
表示 To 区大小 , 以及使用情况 ;
ParOldGen total 349696K, used 593K [0x00000005c1200000, 0x00000005d6780000, 0x0000000715b80000)
object space 349696K, 0% used [0x00000005c1200000,0x00000005c1294520,0x00000005d6780000)
老年代区域的内存大小 , 及使用情况 ;
以上是关于java gc的日志在哪里看?的主要内容,如果未能解决你的问题,请参考以下文章