博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
怎样在IDEA中查看GC日志
阅读量:4039 次
发布时间:2019-05-24

本文共 2110 字,大约阅读时间需要 7 分钟。

引言

今天在看书的时候,在讲到垃圾收集器与内存分配策略的章节时,文中有如下一段代码:

public class ReferenceCountingGC {
public Object instance = null; private static final int _1MB = 1024 * 1024; private byte[] bigSize = new byte[2 * _1MB]; public static void main(String[] args) {
ReferenceCountingGC objA = new ReferenceCountingGC(); ReferenceCountingGC objB = new ReferenceCountingGC(); objA.instance = objB; objB.instance = objA; System.gc(); }}

在之后,书中在给出的运行结果中贴出了完整的垃圾回收结果,如下:

[GC (System.gc()) [PSYoungGen: 6763K->4872K(38400K)] 6763K->4880K(125952K), 0.0293377 secs] [Times: user=0.00 sys=0.00, real=0.03 secs] [Full GC (System.gc()) [PSYoungGen: 4872K->0K(38400K)] [ParOldGen: 8K->4721K(87552K)] 4880K->4721K(125952K), [Metaspace: 3435K->3435K(1056768K)], 0.0040781 secs] [Times: user=0.00 sys=0.01, real=0.00 secs] Heap PSYoungGen      total 38400K, used 998K [0x00000000d5b00000, 0x00000000d8580000, 0x0000000100000000)  eden space 33280K, 3% used [0x00000000d5b00000,0x00000000d5bf9b38,0x00000000d7b80000)  from space 5120K, 0% used [0x00000000d7b80000,0x00000000d7b80000,0x00000000d8080000)  to   space 5120K, 0% used [0x00000000d8080000,0x00000000d8080000,0x00000000d8580000) ParOldGen       total 87552K, used 4721K [0x0000000081000000, 0x0000000086580000, 0x00000000d5b00000)  object space 87552K, 5% used [0x0000000081000000,0x000000008149c710,0x0000000086580000) Metaspace       used 3447K, capacity 4496K, committed 4864K, reserved 1056768K  class space    used 376K, capacity 388K, committed 512K, reserved 1048576K

System.gc()应该只是用于提醒虚拟机来进行垃圾回收而已,并不会直接输出信息才是,而且这个方法也没有任何返回,是不可能直接被打印输出的,那么这些信息从哪里而来呢?

GC日志与如何在IDEA中查看

在实际敲了一遍代码并且跑了一遍之后,发现也确实如之前所想的一样,是并没有任何输出的。但是在书的后面的部分中提到了GC的日志,于是便在网上查了一下,发现这些信息的确应位于GC的日志中。

接下来又尝试了一下该如何查看GC的日志,我平时所用Java的IDE是IDEA,发现直接在IDE中即可直接查看GC日志,这里将我的做法贴在这里以作参考。

在这里插入图片描述

首先是,打开run选项卡中的Edit Configurations。
在这里插入图片描述
之后,便是在刚刚打开的Run/Debug Configurations中点击左上角的加号,然后选"Application",然后在左边详细信息中,将Main class设置为想要查看GC日志的类(需要完整的路径,包括其所在的包,如图中的learning_java.book.ReferenceCountingGC),然后在下面的VM options中输入-XX:+PrintGCDetails,最后点击OK保存设置即可。

这时,再到我们刚刚要输出GC日志的类中,运行一遍程序,便可以看到输出的日志信息了。

转载地址:http://hqsdi.baihongyu.com/

你可能感兴趣的文章
关于AIS编码解码的两个小问题
查看>>
GitHub 万星推荐:黑客成长技术清单
查看>>
可以在线C++编译的工具站点
查看>>
关于无人驾驶的过去、现在以及未来,看这篇文章就够了!
查看>>
所谓的进步和提升,就是完成认知升级
查看>>
昨夜今晨最大八卦终于坐实——人类首次直接探测到了引力波
查看>>
为什么读了很多书,却学不到什么东西?
查看>>
长文干货:如何轻松应对工作中最棘手的13种场景?
查看>>
如何用好碎片化时间,让思维更有效率?
查看>>
No.147 - LeetCode1108
查看>>
No.174 - LeetCode1305 - 合并两个搜索树
查看>>
No.175 - LeetCode1306
查看>>
No.176 - LeetCode1309
查看>>
No.182 - LeetCode1325 - C指针的魅力
查看>>
mysql:sql create database新建utf8mb4 数据库
查看>>
mysql:sql alter database修改数据库字符集
查看>>
mysql:sql drop table (删除表)
查看>>
mysql:sql truncate (清除表数据)
查看>>
scrapy:xpath string(.)非常注意问题
查看>>
yuv to rgb 转换失败呀。天呀。谁来帮帮我呀。
查看>>