`
yutiansky
  • 浏览: 197554 次
  • 性别: Icon_minigender_1
  • 来自: 本溪
社区版块
存档分类
最新评论

gclog的分析方法

阅读更多

一,概要

  通过GC的LOG也能为判断内存泄漏提供些相关信息。

 

二,例子说明

  写一个有泄漏的程序。

package net.dncsoft;

import java.util.ArrayList;
import java.util.List;

public class MainGCTest {
	public static void main(String[] args) throws Exception {
		byte[] buf = null;
		List<byte[]> bufList = new ArrayList<byte[]>();
		long counter = 0;
		while (true) {
			buf = new byte[1024 * 1024];
			bufList.add(buf);
			Thread.sleep(1000);
			System.out.println(counter++);
		}
	}
}

 

三,运行下面的命令。

java -Xmx16m -Xms16m -XX:NewSize=4m -XX:MaxNewSize=4m -Xloggc:./gc.txt -XX:+PrintGCDetails net.dncsoft.MainGCTest

 

四,得到这个GCLog文件。

2.119: [GC 2.119: [DefNew: 2314K->148K(3712K), 0.0046925 secs] 2314K->2196K(16000K), 0.0047737 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] 
5.127: [GC 5.127: [DefNew: 3258K->148K(3712K), 0.0049901 secs] 5306K->5268K(16000K), 0.0050748 secs] [Times: user=0.00 sys=0.01, real=0.02 secs] 
8.135: [GC 8.135: [DefNew: 3245K->148K(3712K), 0.0050552 secs] 8365K->8340K(16000K), 0.0051423 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] 
11.144: [GC 11.144: [DefNew: 3236K->148K(3712K), 0.0054953 secs] 11429K->11413K(16000K), 0.0055777 secs] [Times: user=0.00 sys=0.02, real=0.02 secs] 
14.152: [GC 14.152: [DefNew: 3231K->3231K(3712K), 0.0000191 secs]14.153: [Tenured: 11264K->11264K(12288K), 0.0180049 secs] 14495K->14485K(16000K), [Perm : 291K->291K(12288K)], 0.0181553 secs] [Times: user=0.02 sys=0.00, real=0.01 secs] 
14.171: [Full GC 14.171: [Tenured: 11264K->11264K(12288K), 0.0124251 secs] 14485K->14471K(16000K), [Perm : 291K->286K(12288K)], 0.0125105 secs] [Times: user=0.01 sys=0.00, real=0.02 secs] 
Heap
 def new generation   total 3712K, used 3280K [0x319e0000, 0x31de0000, 0x31de0000)
  eden space 3328K,  98% used [0x319e0000, 0x31d14358, 0x31d20000)
  from space 384K,   0% used [0x31d20000, 0x31d20000, 0x31d80000)
  to   space 384K,   0% used [0x31d80000, 0x31d80000, 0x31de0000)
 tenured generation   total 12288K, used 11264K [0x31de0000, 0x329e0000, 0x329e0000)
   the space 12288K,  91% used [0x31de0000, 0x328e00b0, 0x328e0200, 0x329e0000)
 compacting perm gen  total 12288K, used 286K [0x329e0000, 0x335e0000, 0x369e0000)
   the space 12288K,   2% used [0x329e0000, 0x32a279d0, 0x32a27a00, 0x335e0000)
    ro space 10240K,  51% used [0x369e0000, 0x36f0baf8, 0x36f0bc00, 0x373e0000)
    rw space 12288K,  54% used [0x373e0000, 0x37a776d8, 0x37a77800, 0x37fe0000)
 
分享到:
评论

相关推荐

    ga16.zip-分析GC日志native_stderr.log(可分析WAS6.1版本)

    **分析GC日志的方法:** 1. **手动分析**:直接阅读日志,寻找异常模式,如频繁的Full GC或长时间的暂停。 2. **工具辅助**:使用如VisualVM、JConsole或专门的GC日志分析工具,这些工具能图形化地展示GC活动,使...

    c#log日志类和日志分析器(源码)

    本文将深入探讨“c# log日志类和日志分析器”的相关知识点,包括日志的创建、存储、分析以及提供的源码在实际项目中的应用。 首先,让我们了解什么是日志。日志是程序运行过程中产生的事件记录,这些记录包含了...

    java应用JVM的GC频率观察方法

    此外,可以使用`-Xloggc:gc.log`指定日志输出文件,然后通过工具如GCViewer进行日志分析,以获取更直观的GC行为可视化。 2. 在生产环境下,由于直接修改JVM参数可能影响线上服务,因此通常推荐使用专门的监控工具。...

    gcviewer监控gc工具

    3. **运行GCViewer**:解压GCViewer-master压缩包,运行jar文件,导入GC.log文件进行分析。 4. **分析结果**:观察GCViewer生成的图表和统计信息,分析可能存在的性能问题。 五、应用场景 1. **性能调优**:当应用...

    tomcat GC 优化配置

    ### Tomcat GC 优化配置详解 #### 一、概述 在服务器端应用中,Java虚拟机(JVM)的性能优化至关重要,特别是对于像...此外,定期分析GC日志可以帮助我们更好地理解系统的运行状态,并据此做出进一步的优化决策。

    年轻代gc jvm crash

    2. **分析堆栈轨迹**:查找堆栈轨迹中的关键类和方法,它们可能指向问题发生的代码位置。 3. **检查JVM参数**:确认JVM启动参数是否合理,特别是与内存相关的参数,如`-Xms`、`-Xmx`、`-XX:NewRatio`、`-XX:...

    一次诡异的full gc查找问题全过程

    查看 GC log 日志,发现每次发生 Full GC 时,old 区域和 perm 区域的使用率很低,没有达到触发 Full GC 的条件。此外,项目中配置的是 CMS,为什么没有进行 CMS GC,而直接进行了 Full GC 呢? 查找过程 1. 代码...

    JDK9GC-cheatsheet.pdf

    - `-XX:ErrorFile`和`-XX:LogFile`:重定向GC错误日志和JVM日志。 4. **其他GC相关参数**: - `-XX:+PrintTLAB`,`-XX:+PrintPLAB`,`-XX:+PrintOldPLAB`:输出线程本地分配缓冲区(TLAB/PLAB)信息,帮助优化...

    console.log 一定会导致内存泄漏?不打开 devtools 就不会

    console.log 会导致内存泄漏。 这点没错。 但很多同学会有疑问,是不是因为打开 devtools 才有内存泄漏,不打开就不会呢? 这个我测试了一下:点击...我们通过分析 console.log 的代码执行后的堆内存大小变化就行。

    java 虚拟机问题分析大全

    本文将从JVM常见问题入手,详细介绍问题的分析方法和技术手段。 #### 二、虚拟机问题分析概述 虚拟机问题主要可以分为两大类:一是稳定性问题,如JVM异常崩溃;二是性能问题,例如响应时间过长或CPU利用率过高。 #...

    Java内存分配及垃圾回收文章汇总

    最后,"GC Log分析.doc"可能会讲解如何通过分析GC日志来诊断和解决问题。GC日志记录了垃圾回收的过程和结果,包括GC的启动时间、耗时、内存使用情况等。通过对这些信息的解读,开发者可以发现系统的潜在问题,比如...

    [JAVA·初级]GC垃圾回收机制编程开发技术共14页.p

    例如,`-Xlog:gc*=debug:file=gc.log` 参数可以开启详细的GC日志输出。 总之,【JAVA·初级】GC垃圾回收机制是Java开发者必须掌握的基础知识,深入理解和运用GC机制,能有效提升程序的性能和稳定性。在实践中不断...

    Log4j2手册阅读随笔(Log4j2新特性)

    Log4j2的API部分介绍了如何在Java程序中使用Log4j 2进行日志记录的基本方法。开发者可以利用Log4j 2提供的API编写灵活的日志记录语句,以便能够根据不同的日志级别记录信息。 在配置部分,手册详细说明了如何配置...

    深入分析Tomcat无响应问题及解决方法

    问题描述  生产环境下有几台tomcat,但突然某个时候发现所有的请求都不能响应了,由于... 由于CPU没有出现异常,所以应该不是GC出现了问题,但还是检查了下GC log,果然GC也没问题  此时必须让jstack上场了,果然在使用

    JDK自带VM分析工具

    - `jmap -histo:live 1234 &gt; heapinfo.log` 可以将 PID 为 1234 的进程的存活对象统计信息导出到 heapinfo.log 文件中。 - `jmap -dump:format=b,file=dump.bin 1234` 可以生成 PID 为 1234 的进程的二进制格式堆...

    GCMS定性分析.ppt

    在GC-MS定性分析中,主要有两种主要的方法:质谱检索和保留指数定性。 首先,质谱检索是基于已知化合物的标准质谱数据进行对比分析。目前,电子轰击(EI)质谱数据库主要用于四极质谱,因为四极质谱具有较高的准确...

    Sun JDK 1.6内存管理--调优篇-毕玄

    文章列举了几种常用的测量工具,包括GC日志(GCLog)、jstat、jmap、sar、top等。这些工具能帮助开发者深入了解JVM运行状态,从而进行有针对性的调优。 ### GC误解与调优目标 文章引用了来自JavaOne 2010的“垃圾...

Global site tag (gtag.js) - Google Analytics