GC日志时间分析】的更多相关文章

在GC日志里,一条完整的GC日志记录最后,会带有本次GC所花费的时间,如下面这一条新生代GC: [GC [DefNew: 3298K->149K(5504K), secs] [Times: user=0.00 sys=0.00, real=0.01 secs] 注意到日志中时间分为了三块:user, sys,和 real,三者的区别和含义如下: real:指的是在此次GC事件中所花费的总时间: user:指的是CPU工作在用户态所花费的时间: sys:指的是CPU工作在内核态所花费的时间. us…
首先查看服务器版本默认信息: 修改tomcat/bin/catalina.sh,在最顶端加入JAVA_OPTS="$JAVA_OPTS -XX:+PrintGCDetails -Xloggc:/usr/local/java/apache-tomcat-7.0.78/bin/gc.log" 随后在 -Xloggc指定路径下,打开gc.log,部分信息如下: Java HotSpot(TM) 64-Bit Server VM (25.144-b01) for linux-amd64 JRE…
搜到的几篇讲GC日志的文章,学到了很多东西.但是有些错误或者不够精确的地方. 因此自己尝试着总结一下. 先写个程序,然后结合程序解释每句话的意思. 运行参数 -Xms200M -Xmx200M -Xmn100M -XX:+PrintGCDetails -XX:+PrintGCTimeStamps默认的配置:client端,垃圾收集器是Parallel GC:JDK1.8没有永久代:SurvivorRatio = 8: import java.util.List; public class MyM…
Java中的GC有哪几种类型? 参数 描述 UseSerialGC 虚拟机运行在Client模式的默认值,打开此开关参数后, 使用Serial+Serial Old收集器组合进行垃圾收集. UseParNewGC 打开此开关参数后,使用ParNew+Serial Old收集器组合进行垃圾收集. UseConcMarkSweepGC 打开此开关参数后,使用ParNew+CMS+Serial Old收集器组合进行垃圾收集.Serial Old作为CMS收集器出现Concurrent Mode Fai…
堆内存使用分析,GC 日志解读 重要的东东 在Java中,对象实例都是在堆上创建.一些类信息,常量,静态变量等存储在方法区.堆和方法区都是线程共享的. GC机制是由JVM提供,用来清理需要清除的对象,回收堆内存. GC机制将Java程序员从内存管理中解放了出来,可以更关注于业务逻辑. 在Java中,GC是由一个被称为垃圾回收器的守护线程执行的. 在从内存回收一个对象之前会调用对象的finalize()方法. 作为一个Java开发者不能强制JVM执行GC:GC的触发由JVM依据堆内存的大小来决定.…
相关文章 Android内存优化系列 Java虚拟机系列 前言 在Java虚拟机(三)垃圾标记算法与Java对象的生命周期这篇文章中,提到了Java虚拟机的GC日志.DVM和ART的GC日志与Java虚拟机的日志有较大的区别,这篇文章就对DVM和ART的GC日志进行分析. 1.DVM的GC日志 在 DVM 中,每次垃圾收集都会将GC日志打印到 logcat 中,具体的格式为: D/dalvikvm: <GC_Reason> <Amount_freed>, <Heap_stat…
Java GC类型 Java中的GC有哪几种类型? 参数 描述 UseSerialGC 虚拟机运行在Client模式的默认值,打开此开关参数后, 使用Serial+Serial Old收集器组合进行垃圾收集. UseParNewGC 打开此开关参数后,使用ParNew+Serial Old收集器组合进行垃圾收集. UseConcMarkSweepGC 打开此开关参数后,使用ParNew+CMS+Serial Old收集器组合进行垃圾收集.Serial Old作为CMS收集器出现Concurren…
一.首先来看一下JVM中的GC有哪几种类型? 1.-XX:UseSerialGC 虚拟机运行在Client模式的默认值,打开此开关参数后,使用Serial+Serial Old收集器组合进行垃圾收集. 2.-XX:UseParNewGC 打开此开关参数后,使用ParNew+Serial Old收集器组合进行垃圾收集. 3.-XX:UseConcMarkSweepGC 打开此开关参数后,使用ParNew+CMS+Serial Old收集器组合进行垃圾收集.Serial Old作为CMS收集器出现C…
性能测试排查定位问题,分析调优过程中,会遇到要分析gc日志,人肉分析gc日志有时比较困难,相关图形化或命令行工具可以有效地帮助辅助分析. Gc日志参数 通过在tomcat启动脚本中添加相关参数生成gc日志 -verbose.gc开关可显示GC的操作内容.打开它,可以显示最忙和最空闲收集行为发生的时间.收集前后的内存大小.收集需要的时间等. 打开-xx:+ printGCdetails开关,可以详细了解GC中的变化. 打开-XX: + PrintGCTimeStamps开关,可以了解这些垃圾收集发…
性能测试排查定位问题,分析调优过程中,会遇到要分析gc日志,人肉分析gc日志有时比较困难,相关图形化或命令行工具可以有效地帮助辅助分析. Gc日志参数 通过在tomcat启动脚本中添加相关参数生成gc日志 -verbose.gc开关可显示GC的操作内容.打开它,可以显示最忙和最空闲收集行为发生的时间.收集前后的内存大小.收集需要的时间等. 打开-xx:+ printGCdetails开关,可以详细了解GC中的变化. 打开-XX: + PrintGCTimeStamps开关,可以了解这些垃圾收集发…
主要看<深入理解Java虚拟机> 第三张 P84 开始是垃圾收集相关. 1. 1960年诞生于MIT的Lisp是第一门采用垃圾回收的语言. 2. 程序计数器.虚拟机栈.本地方法栈3个区域随线程而生而亡. 3. 垃圾回收主要关注的是堆里面的对象. 1. 检查 1.1 引用计数.基本不用.因为很难解决相互循环引用的问题.当然Python.COM等应用里面用到了.热热 1.2 可达性分析.Reachability Analysis. 通过一系列作为GC roots的对象作为起始. GC roots的…
JAVA 从GC日志分析堆内存 第七节   在上一章中,我们只设置了整个堆的内存大小.但是我们知道,堆又分为了新生代,年老代.他们之间的内存怎么分配呢?新生代又分为Eden和Survivor,他们的比例大小能改变吗?其实这些都是可控的,以前没有讲到是因为就算讲了也只是讲讲而已,看不到实质性的东西.因此这章我们通过分析GC日志来一步步讲解如何细化设置堆内存. 首先我们来了解几个相关的参数: -XX:+PrintGCDetails:用于告诉虚拟机回收垃圾的时候顺便打印日志. -Xloggc:路径 :…
JVM的GC日志的主要參数包含例如以下几个: -XX:+PrintGC 输出GC日志 -XX:+PrintGCDetails 输出GC的具体日志 -XX:+PrintGCTimeStamps 输出GC的时间戳(以基准时间的形式) -XX:+PrintGCDateStamps 输出GC的时间戳(以日期的形式,如 2013-05-04T21:53:59.234+0800) -XX:+PrintHeapAtGC 在进行GC的前后打印出堆的信息 -Xloggc:../logs/gc.log 日志文件的输…
最近在学习JVM和GC调优,今天总结下CMS的一些特点和要点,让我们先简单的看下整个堆年轻代和年老代的垃圾收集器组合(以下配合java8完美支持,其他版本可能稍有不同),其中标红线的则是我们今天要着重讲的内容: 垃圾回收器的可用组合: ParNew and CMS "Concurrent Mark and Sweep" 是CMS的全称,官方给予的名称是:“Mostly Concurrent Mark and Sweep Garbage Collector”; 年轻代:采用 stop-t…
  jvm的GC日志分析 标签: jvm内存javagc 2015-06-22 16:37 1566人阅读 评论(1) 收藏 举报  分类: Java(4)  JVM的GC日志的主要参数包括如下几个: -XX:+PrintGC 输出GC日志 -XX:+PrintGCDetails 输出GC的详细日志 -XX:+PrintGCTimeStamps 输出GC的时间戳(以基准时间的形式) -XX:+PrintGCDateStamps 输出GC的时间戳(以日期的形式,如 2013-05-04T21:53…
开发十年,就只剩下这套架构体系了! >>>   在前面的文章中,我们只设置了整个堆的内存大小.但是我们知道,堆又分为了新生代,年老代.他们之间的内存怎么分配呢?新生代又分为Eden和Survivor,他们的比例大小能改变吗?其实这些都是可控的,以前没有讲到是因为就算讲了也只是讲讲而已,看不到实质性的东西.因此这章我们通过分析GC日志来一步步讲解如何细化设置堆内存.    首先我们来了解几个相关的参数: -XX:+PrintGCDetails:用于告诉虚拟机回收垃圾的时候顺便打印日志 -X…
在上篇博客中,我们学习了Parallel.CMS.G1三种垃圾收集器的日志格式,本次我们通过工具去分析日志,会更加的直观 日志格式博客地址:java虚拟机(十一)--GC日志分析 GCeasy: 这是一个在线分析日志的工具,主要功能是免费的,存在部分收费,地址:https://gceasy.io/ 把上篇博客生成的日志文件,上传分析,就会接到可视化界面 文件名:Parallel.gc.log,持续时间:6s,可以下载,分享 jvm堆: Allocated:各部分分配大小 Peak:峰值内存使用量…
本系列笔记主要基于<深入理解Java虚拟机:JVM高级特性与最佳实践 第2版>,是这本书的读书笔记. 收集GC日志 不同的垃圾收集器,输出的日志格式各不相同,但也有一些相同的特征.熟悉各个常用垃圾收集器的GC日志,是进行JVM调优的必备一步. 解析GC日志,首先需要收集日志,常用的有以下JVM参数用来打印输出日志信息: 参数 说明 -XX:+PrintGCDetails 打印GC详细信息 -XX:+PrintGCTimeStamps 输出GC的时间戳(以基准时间的形式) -XX:+PrintG…
GC相关:java虚拟机(六)--垃圾收集器和内存分配策略 java虚拟机(五)--垃圾回收机制GC 打印日志相关参数: -XX:+PrintGCDetails -XX:PrintGCTimestamps -XX:PrintGCDateStamps -Xloggc:$CATALINA_HOME/logs/gc.log -XX:+PrintHeapAtGC -XX:+PrintTenuringDistriution:发生GC的时候,把Young区中对象的年龄打印出来 其余的参数应该能直接看懂的,就…
点击返回上层目录 原创声明:作者:Arnold.zhao 博客园地址:https://www.cnblogs.com/zh94 GC日志分析详解 以ParallelGC为例,YoungGC日志解释如下 FullGC日志解释如下 GC LOG 原创声明:作者:Arnold.zhao 博客园地址:https://www.cnblogs.com/zh94 下述为本人UAT环境所取出来的CMS GC log,为了便于理解已增加相关注释 请注意,这是一个很长的GC日志,滚动下拉框查看所有 如果需要下载该l…
本系列的最后一部分是有关垃圾收集(GC)日志的JVM参数.GC日志是一个很重要的工具,它准确记录了每一次的GC的执行时间和执行结果,通过分析GC日志可以优化堆设置和GC设置,或者改进应用程序的对象分配模式. -XX:+PrintGC 参数-XX:+PrintGC(或者-verbose:gc)开启了简单GC日志模式,为每一次新生代(young generation)的GC和每一次的Full GC打印一行信息.下面举例说明: 1 [GC 246656K->243120K(376320K), 0.09…
目录 一.GC日志的格式分析 二.运行时开启GC日志 一.GC日志的格式分析 在讲述GC日志之前,我们先来运行下面这段代码 package com.example; public class TestMinorGC { private static final int _1MB = 1024*1024; public static void testAllocation() { byte[] allocation1, allocation2, allocation3, allocation4;…
分析如下GC日志:[GC [PSYoungGen: 9216K->1024K(9216K)] 1246196K->1246220K(1287040K), 0.2398360 secs] [Times: user=0.29 sys=0.01, real=0.24 secs][Full GC [PSYoungGen: 1024K->0K(9216K)] [ParOldGen: 1245196K->1245509K(1492992K)] 1246220K->1245509K(150…
本文是 Plumbr 发行的 Java垃圾收集手册 的部分内容.文中将介绍GC日志的输出格式, 以及如何解读GC日志, 从中提取有用的信息.我们通过 -XX:+UseSerialGC 选项,指定JVM使用串行垃圾收集器, 并使用下面的启动参数让 JVM 打印出详细的GC日志: -XX:+PrintGCDetails -XX:+PrintGCDateStamps -XX:+PrintGCTimeStamps 这样配置以后,发生GC时输出的日志就类似于下面这种格式(为了显示方便,已手工折行): 20…
这个是之前处理过的一个线上问题,处理过程断断续续,经历了两周多的时间,中间各种尝试,总结如下.这篇文章分三部分: 1.问题的场景和处理过程:2.GC的一些理论东西:3.看懂GC的日志 先说一下问题吧 问题场景:线上机器在半夜会推送一个700M左右的数据,这个时候有个数据置换的过程,也就是说有700M*2的数据在heap区域中,线上系统超时比较多,导致了很严重(严重程度就不说了)的问题. 问题原因:看日志,系统接口超时的时候,系统出现了FullGC,这个时候stop-the-world了,也就停机…
一.调优参数设置 JVM的GC日志的主要参数包括如下几个: -XX:+PrintGC 输出GC日志 -XX:+PrintGCDetails 输出GC的详细日志 -XX:+PrintGCTimeStamps 输出GC的时间戳(以基准时间的形式) -XX:+PrintGCDateStamps 输出GC的时间戳(以日期的形式,如 2013-05-04T21:53:59.234+0800) -XX:+PrintHeapAtGC 在进行GC的前后打印出堆的信息 -XX:+PrintGCApplicatio…
full gc频繁的分析及解决案例 2016-04-14 09:20:54      0个评论    来源:end's coding life   收藏   我要投稿 现象 ? 1 系统报警full gc次数过多,每2分钟达到了5-6次,这是不正常的现象 ? 1 在full gc报警时的gc.log如下: ? 1   ? 1 在full gc报警时的jstat如下: ? 1 sudo -u admin -H /opt/taobao/java/bin/jstat -gcutil `pgrep ja…
JVM的GC日志的主要参数包括如下几个: -XX:+PrintGC 输出GC日志 -XX:+PrintGCDetails 输出GC的详细日志 -XX:+PrintGCTimeStamps 输出GC的时间戳(以基准时间的形式) -XX:+PrintGCDateStamps 输出GC的时间戳(以日期的形式,如 2013-05-04T21:53:59.234+0800) -XX:+PrintHeapAtGC 在进行GC的前后打印出堆的信息 -Xloggc:../logs/gc.log 日志文件的输出路…
这个是之前处理过的一个线上问题,处理过程断断续续,经历了两周多的时间,中间各种尝试,总结如下.这篇文章分三部分: 1.问题的场景和处理过程:2.GC的一些理论东西:3.看懂GC的日志 先说一下问题吧 问题场景:线上机器在半夜会推送一个700M左右的数据,这个时候有个数据置换的过程,也就是说有700M*2的数据在heap区域中,线上系统超时比较多,导致了很严重(严重程度就不说了)的问题. 问题原因:看日志,系统接口超时的时候,系统出现了FullGC,这个时候stop-the-world了,也就停机…
本文是 Plumbr 发行的 Java垃圾收集指南 的部分内容.文中将介绍GC日志的输出格式, 以及如何解读GC日志, 从中提取有用的信息.我们通过 -XX:+UseSerialGC 选项,指定JVM使用串行垃圾收集器, 并使用下面的启动参数让 JVM 打印出详细的GC日志: -XX:+PrintGCDetails -XX:+PrintGCDateStamps -XX:+PrintGCTimeStamps 1 2 3 4 这样配置以后,发生GC时输出的日志就类似于下面这种格式(为了显示方便,已手…