一段fullGC日志的分析

线上服务运行时间长变慢问题的分析定位 问题最近线上有一个服务,运行个几天,就会变得很慢。这里很慢指的是经常对于请求的响应时间很大,又是甚至有二三十秒,导致别人调接口,经常出现超时问题。这里简单介绍些这个问题的定位方法过程以及最后怎么解决的。 很多时候,我们更应该积累分析问题、解决问题的方法,这也是一个人工作能力的表现吧。当然专业知识的积累也是必不可少的,这是基础。就像本文的分析,要是没有点JVM的知识基础,这个问题肯定是解决不了的。分 阅读详情
 {Heap before GC invocations=49 (full 4):
 def new generation   total 18432K, used 9232K [0x03c00000, 0x05000000, 0x09150000)
  eden space 16384K,  43% used [0x03c00000, 0x043043c8, 0x04c00000)
  from space 2048K, 100% used [0x04c00000, 0x04e00000, 0x04e00000)
  to   space 2048K,   0% used [0x04e00000, 0x04e00000, 0x05000000)
 tenured generation   total 40852K, used 30840K [0x09150000, 0x0b935000, 0x13c00000)
   the space 40852K,  75% used [0x09150000, 0x0af6e378, 0x0af6e400, 0x0b935000)
 compacting perm gen  total 16384K, used 16383K [0x13c00000, 0x14c00000, 0x17c00000)
   the space 16384K,  99% used [0x13c00000, 0x14bfffb8, 0x14c00000, 0x14c00000)
No shared spaces configured.
6.693: [Full GC6.693: [Tenured: 30840K->31463K(40852K), 0.0935371 secs] 40073K->31463K(59284K), [Perm : 16383K->16383K(16384K)], 0.0936822 secs] [Times: user=0.09 sys=0.00, real=0.09 secs] 
Heap after GC invocations=50 (full 5):
 def new generation   total 23616K, used 0K [0x03c00000, 0x055a0000, 0x09150000)
  eden space 20992K,   0% used [0x03c00000, 0x03c00000, 0x05080000)
  from space 2624K,   0% used [0x05080000, 0x05080000, 0x05310000)
  to   space 2624K,   0% used [0x05310000, 0x05310000, 0x055a0000)
 tenured generation   total 52440K, used 31463K [0x09150000, 0x0c486000, 0x13c00000)
   the space 52440K,  59% used [0x09150000, 0x0b009fd8, 0x0b00a000, 0x0c486000)
 compacting perm gen  total 16384K, used 16383K [0x13c00000, 0x14c00000, 0x17c00000)
   the space 16384K,  99% used [0x13c00000, 0x14bfffb8, 0x14c00000, 0x14c00000)
No shared spaces configured.
} 

18432K=16384K+2048K

待续..
GC日志分析实战:用GCEasy快速定位JVM内存泄漏(附FullGC排查案例) 本文通过实战案例详细介绍了如何使用GCEasy工具分析GC日志,快速定位JVM内存泄漏问题。文章重点讲解了FullGC异常排查思路,结合jstat、arthas等工具追踪System.gc()调用源,并提供了优化建议和高级分析技巧,帮助开发者有效解决内存泄漏问题。 阅读详情

相关推荐

HUMAnN数据库国内备份下载源(转自刘永鑫博士github)

百度云链接 R语言常用包合集 Windows 10版4.0.x:链接:https://pan.baidu.com/s/1JFwLP2SonK1howD5MNgNYg 提取码:l08k Windows 10版3.6.x:链接:https://pan.baidu.com/s/1h-qR2lmlaMgR4M7VbgtAFg 提取码:s5fi 下载后解压至当前目录,可获得3.6/4.0目录,剪切并替换文档 - R - win-library - 3.6/4.0 目录即可 扩增子数据库 宏基因组数据库 HUM.

zlabx的博客 3248

GC日志配置与格式

GC日志配置与日志格式 -XX:+PrintGC或者-verbose:gc:开启日志打印功能,即JVM会将运行期间的每次GC事件都以日志方式输出出来。配置之后打印如下: [GC 118250K->113543K(130112K), 0.0094143 secs] [Full GC 121376K->10414K(130112K), 0.0650971 secs] GC表示为Mi...

源码之下,了无秘密 5046

【毕设】基于LoRa的物联网控制器:从原理图到PCB的完整硬件设计指南

本文提供了一份完整的基于LoRa的物联网控制器硬件设计指南,涵盖从系统框图、原理图设计到PCB布局布线的全流程。详细讲解了电源电路、单片机最小系统、信号接口以及LoRa无线模块等核心模块的设计要点与抗干扰技巧,并分享了实用的调试心得,旨在帮助电子、物联网专业学生顺利完成毕业设计,掌握低功耗远距离物联网节点的硬件开发实践。

weixin_42126677的博客 307

GC日志分析

打印gc日志: -XX:+PrintGCDetails -XX:+PrintGCDateStamps -XX:+PrintGCTimeStamps -XX:+PrintGC -Xloggc:logs/gc.log Young GC # --- Young GC start --- # 之前young gc次数、之前full gc次数 {Heap before GC invocations=124398 (full 12): # 新生代使用情况 par new generat...

java小兵 932

STM32F4实战:手把手教你实现USB OTG双模式切换(Host/Slave)

本文详细介绍了如何在STM32F4上实现USB OTG双模式切换(Host/Slave),包括硬件架构解析、软件实现机制、主机模式下的U盘读写以及从机模式下的自定义设备开发。通过实战案例和优化技巧,帮助开发者快速掌握USB双角色功能,提升嵌入式系统开发的灵活性和效率。

u9v0w的博客 730

Lumerical Python API实战指南(一)——从数据优化到自动化工作流

本文是Lumerical Python API实战指南,旨在帮助用户从繁琐的手动仿真操作转向智能自动化工作流。文章详细介绍了API环境的零基础搭建、核心操作(会话管理、命令执行与数据交换),并通过参数扫描与自动化分析流水线的实战案例,展示了如何利用Python脚本实现从数据优化到自动化仿真的全过程,显著提升光子设计效率。

xxx12的博客 567

jvm调优经验总结

1.GC的时间足够的小2.GC的次数足够的少3.发生Full GC的周期足够的长前两个目前是相悖的,要想GC时间小必须要一个更小的堆,要保证GC次数足够少,必须保证一个更大的堆,我们只能取其平衡。更大的年轻代必然导致更小的年老代,大的年轻代会延长普通GC的周期,但会增加每次GC的时间;小的年老代会导致更频繁的Full GC更小的年轻代必然导致更大年老代,小的年轻代会导致普通GC很频繁,但每次的GC时间会更短;大的年老代会减少Full GC的频率。...

weixin__BJ050106的博客 1839

CTF全能工具箱ProV2:集成AI与94GB离线资源库,打造无网环境下的智能解题流水线

CTF全能工具箱ProV2是一款专为线下CTF比赛设计的All-in-One离线解决方案。它集成了94GB的庞大离线资源库,涵盖Web、逆向、Pwn等全方向工具链与知识库,并创新性地内置了本地AI大模型,可在断网环境下提供智能解题辅助,实现从信息收集到漏洞利用的智能流水线作业,极大提升比赛效率。

weixin_29240343的博客 424

JVM-GC总结-配置实战--第三发

配置举例1: vm args:  -Xms60m -Xmx60m -XX:NewRatio=2 -XX:SurvivorRatio=3 -XX:MaxPermSize=30m -XX:MaxTenuringThreshold=3 -XX:+PrintHeapAtGC 使用工具:jvisualvm (安装visual gc 插件)  根据设置堆内存为60m, 因为设置了-XX:N

XINJing的专栏 483

Cadence OrCAD Capture原理图中为功能模块分配ROOM的方法

本文详解介绍原理图设计阶段为原理图模块分配ROOM的方法。

fydar的博客 1347

杰理蓝牙SPP用户接口详细文档

本文档详细介绍了基于JL701n芯片的蓝牙SPP用户接口实现。主要内容包括:1) 文件结构分析,包含必要的头文件和调试配置;2) 核心数据结构,如全局变量和TWS功能ID定义;3) 五大功能模块实现:数据发送、状态管理、数据接收、TWS支持和初始化清理;4) API接口说明,包括公共接口函数和回调函数;5) 使用教程,涵盖基本流程和高级应用示例。该接口支持虚拟串口连接,实现蓝牙设备间数据传输,特别针对TWS场景进行了优化,提供连接状态管理、数据收发等功能。文档还包含错误处理、重试机制等实用建议,适合蓝牙SP

qq_42014563的博客 1180

Full GC (Ergonomics)排查分析

jstat -gcutil < pid > GC日志 jmap -heap < pid> jmap -histo < pid> | head -n 30

南风知我意 1927

9篇2章2节:GBD 数据库的数据申请详解

无论您是初入公共卫生领域的学生、资深的科研工作者,还是政策决策者,GBD数据库都将成为您数据分析与决策支持中不可或缺的重要工具。

MD Code 2601

理解Java的GC日志

分析例如以下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)...

weixin_30507481的博客 99

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

记一次GC 排查及优化

Java HotSpot(TM) 64-Bit Server VM (25.25-b02) for linux-amd64 JRE (1.8.0_25-b17), built on Sep 17 2014 17:32:11 by "java_re" with gcc 4.3.0 20080428 (Red Hat 4.3.0-8) Memory: 4k page, physical 32779824k(6839108k free), swap 0k(0k free) CommandLine flags: -

Arnold的博客 1635

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

记录一次Springboot服务不定期从Nacos注册中心掉线排查情况

会发现还是org/hibernate/internal/util/collections/BoundedConcurrentHashMap,但是在这个工具里可以看到具体的查询sql,多查看几个这个对象,发现里面的sql都是这个in条件很多,但是每个in的个数不一样,现在情况就已经很符合预期了。3.查看Springboot服务的日志,发现日志里还是有接收到请求并处理的相关日志记录,只是访问Nacos报错,说明服务并未宕掉。3)优化查询:如果可能,你可以尝试优化你的查询,减少使用in条件。

leonjack123的博客 2693

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

JAVA CPU 100 分析

某系统在2016-01-06T14:52:36  时间开始,监控发现CPU user time(us)一直保持在 60--100 %区间。影响部分线上业务。 线程堆栈发现,GC线程排在消耗首位。 下面是GC日志部分截图: 2016-01-06T14:50:31.180+0800: 102400.862: [Full GC [PSYoungGen: 40061K->

yysct2005的专栏 648

fullgc的线上解决 包括gc日志的生成与查看

GC日志生成与查看 工具分析GC日志 工具:HPjtune或HPJmeter 获取地址 http://www.hp.com/go/java 参考文档 http://www.javaperformancetuning.com/tools/hpjtune/index.shtml 1.JVM 加启动参数 -Xloggc:<file>;如在TOMCAT启动时加此参数;<file>...

19li 2619

Full GC触发原理和日志分析

1、Java GC的工作原理 GC(garbage collection)是指垃圾回收机制,当一个对象不能再被后续程序所引用到时,这个对象所占用的内存空间就没有存在的意义了,java虚拟机会不定时的去检测内存中这样的对象,然后回收这块内存空间。当可用内存不能满足内存请求时,GC会自动进行。 所有通过new创建的对象的内存都在堆中分配,其大小可以通过-Xms(程序的初始化内存大小)和-Xmx(程序占用的最大内存)来控制。堆被划分为新生代和旧生代,新生代又被进一步划分为Eden和Survivor区,最后Surv

向来缘浅,奈何情深 3266

CMS发生FullGc分析

fullgc的原因Full GC触发条件:(1)System.gc()方法的调用该方法不一定执行,但是执行的时候是fullgc。(2)老年代空间不足老年代空间只有在新生代对象转入及创建为...

春哥大魔王的博客 4855

解决fullgc_CMS发生FullGc分析

fullgc的原因Full GC触发条件:(1)System.gc()方法的调用该方法不一定执行,但是执行的时候是fullgc。(2)老年代空间不足老年代空间只有在新生代对象转入及创建为大对象、大数组时才会出现不足的现象,当执行Full GC后空间仍然不足,则抛出如下错误:java.lang.OutOfMemoryError: Java heap space为避免以上两种状况引起的Ful...

weixin_36334262的博客 755

【JVM】线上一次fullGC排查思路

再仔细观察堆内内存使用情况发现发生fullgc后,老年代该对象就可以正常回收,说明该对象的因为过大而直接进入老年代的,本来如果是小对象就会直接被YGC回收的。这是因为我们当时配置了自动dump的参数,每次fullgc后都会去dump日志,并且dump的日志太大,占用了很大的磁盘空间,导致线上一直在告警。(4)、分配担保: 就是在年轻代的两个区都放不下的时候,就分配到老年代,如果老年代也放不下了,那么就会进行fullGC。(1)、大对象优先分配老年代。(3)、老对象也会放到老年代。

xiazi0721的博客 866

一次FullGC 血案侦破过程

一、持续报警 恢复 2、查后台日志 top jstat -gc pid jstat -gc()capacity -pid 查看head(关于Java Dump日志重点关注点,见这篇文章《三个实例分析Java Thread Dump日志》 jstack pid 这种信息量太大且杂乱,不易定位问题点,加grep 搜索关键词 waiting on 定位下 ...

zerovpp的博客 259

一次 JVM FullGC 的排查过程及解决方案!

1、问题产生 最近新上线的系统偶尔会报FullGC时间过长(>1s)的告警,查看GC日志,如下图所示: 看到GC日志,我第一时间关注到的不是GC耗时,而是GC触发的原因:Metadata GC Threshold 也就是 FullGC 触发的原因是因为Metaspace大小达到了GC阈值。在监控系统里面看了一下Metaspace的大小变化趋势,如下图所示: 按照以往的经验,M...

mifffy_java的博客 5011
上一篇: 深入了解JVW
下一篇: 《深入理解Java虚拟机(第2版)》的笔记-第89页
琅琊山二当家
博客等级 码龄18年 447粉丝 322原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值