java 打开gc日志_在运行时打开GC日志记录

java 打开gc日志

我自己的汽车音响概念图 总是有下一个JVM表现不佳。 而且,您内心深知,如果您只有少数启动选项可以公开一些有关正在发生的事情的信息,那么您可能就有机会真正修复该死的东西。 但是不,您需要的标志( -XX:+ HeapDumpOnOutOfMemoryError或-XX:+ PrintGCDetails )总是丢失。

因此,您可以悲痛地耸耸肩,杀死受苦的JVM,更改启动参数,然后祈祷问题的情况在重新启动后得以重现。 有时确实如此,现在您可能有足够的证据来进行下一步工作,并开始解决根本原因。

所描述的方法的问题很明显–您需要经历一次额外的重新启动,而不是单次中断,才能选择那些令人讨厌的调试选项。 实际上,有一种解决方法,有时将其添加到您的武库中可能会被证明是有益的。

资讯

JDK捆绑包中隐藏了一个不错的小实用程序。 jinfo是一个命令行实用程序,用于从运行中的Java进程中收集配置信息。 但是,有趣的部分是,使用-flag选项, jinfo实用程序可以为指定的Java进程动态调整某些Java VM标志的值。 这样的标志的列表是有限的,但是在某些情况下仍然有用。 可以通过以下命令检查JVM上此类标志的完整列表:

my-precious me$ java -XX:+PrintFlagsFinal -version|grep manageableintx CMSAbortablePrecleanWaitMillis            = 100                                 {manageable}intx CMSWaitDuration                           = 2000                                {manageable}bool HeapDumpAfterFullGC                       = false                               {manageable}bool HeapDumpBeforeFullGC                      = false                               {manageable}bool HeapDumpOnOutOfMemoryError                = false                               {manageable}... cut for brevity ...bool PrintGC                                   = false                               {manageable}bool PrintGCDateStamps                         = false                               {manageable}bool PrintGCDetails                            = false                               {manageable}bool PrintGCTimeStamps                         = false                               {manageable}

-XX:+ PrintFlagsFinal列出所有JVM选项,在外面的“ 管理 ”选项目前的兴趣。 这些可通过JDK管理界面( com.sun.management.HotSpotDiagnosticMXBean API )动态写入。 同样的MBean也通过JConsole发布。 按照我的喜好,命令行版本要方便得多。

示例如何使用jinfo

作为如何使用jinfo的示例,让我们动态地在运行的JVM上打开GC日志记录:

my-precious me$ jps
12278 HighAllocationRate
12279 Jps
12269 JConsole
my-precious me$ jinfo -flag +PrintGCDetails 12278
my-precious me$ jinfo -flag +PrintGC 12278
my-precious me$

该实用程序通过打开-XX:+ PrintGC和-XX:+ PrintGCDetails选项来打开GC日志记录。 与命令行参数的行为的细微差别在于,您必须通过jinfo同时指定PrintGCDetailsPrintGC选项 如果您是通过启动脚本设置参数的,则只需-XX:+ PrintGCDetails即可 ,因为它会自动打开-XX:+ PrintGC

但是,检查标准输出后,12278 PID的GC日志开始滚动良好:

...
[GC (Allocation Failure) [PSYoungGen: 876416K->102624K(909312K)] 1094420K->320820K(1161216K), 0.2173131 secs] [Times: user=0.74 sys=0.00, real=0.22 secs] 
...
[GC (Allocation Failure) [PSYoungGen: 890304K->102240K(917504K)] 1108924K->320956K(1169408K), 0.2446639 secs] [Times: user=0.82 sys=0.01, real=0.25 secs] 
...

关闭日志记录是类似的–您只需要调用jinfo -flag -PrintGCDetails 12278jinfo -flag -PrintGC 12278命令即可删除日志消息。

有了这些知识,我只能希望它将为您节省一两天的故障排除时间。 假设您不是性能监控工具(例如Plumbr)的满意用户之一,在这种情况下,您首先不会遇到此类需求。

翻译自: https://www.javacodegeeks.com/2015/03/turning-on-gc-logging-at-runtime.html

java 打开gc日志

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/338426.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C 和C语言条件运算符的区别

条件运算符(conditional operator)有时候也称为三元运算符(ternary operator,或者trinary operator),因为它是唯一需要 3 个操作数的运算符:条件 ? 表达式1 : 表达式2条件运算操作会首先计算条…

oracle 执行带参数的sql语句_当用EXECUTE IMMEDIATE执行SQL语句中的参数个数也是动态的?用什么方法实现?...

当用EXECUTE IMMEDIATE执行SQL语句中的参数个数也是动态的?用什么方法实现?描述详细一点就是:在要执行的SQL语句中所用到(: parameter)这种参数的个数,因具体条件不同,而不同,而在执行语句EXECUTE IMMEDIAT…

xsl调用java方法传参_Java中的XSL转换:一种简单的方法

xsl调用java方法传参XSL转换 (XSLT)是将一个XML文档转换为另一个XML文档的强大机制。 但是,在Java中,XML操作相当冗长和复杂。 即使是简单的XSL转换,也必须编写几十行代码—如果需要适当的异常处理和日志记录&#xff…

C 运算符和语句总结

运算符: C 表达式中的左值和右值:当一个对象被用作左值时,用的是对象的身份(内存中的位置)。当作为右值时,用的是对象的值(内容)。或者说,lvalue:具有存贮性质的对象&…

# 遍历结构体_C#学习笔记05--枚举/结构体

一.枚举当变量的取值范围是固定的几个, 例如性别--男,女; 英雄类型 -- 法师, 刺客.战士, 射手等等. 这时就可以使用枚举类型, 会更加简洁方便.1.1.定义:访问修饰符 enum 枚举类型名 {成员1,成员2,成员3,... }public enum Days{Mon 1,Tue,Wed,Thu,Fri,Sat,Sun}enum: 是枚举的…

单例嵌套 ios_嵌套类型的前5个用例

单例嵌套 ios前几天,关于reddit进行了有趣的讨论,即静态内部类。 什么时候太多? 首先,让我们回顾一下Java的基本历史知识。 Java语言提供了四个级别的嵌套类 ,通过“ Java语言”,我的意思是这些构造仅是“…

C语言中枚举enum的用法

本文举例说明C语言中enum枚举关键字的用法。用来同时定义多个常量利用enum定义月份的例子如下。#include enum week {Mon1,Tue,Wed,Thu,Fri,Sat,Sun}; int main() {printf("%d",Tue); return 0; }这样定义Mon的值为1之后,Tue的值就被默认定义为2&#…

苹果更新未知错误17_iOS 13 新功能,静音未知来电

果粉俱乐部让科技更好的服务生活点击上方「蓝字」加入我们iOS 13 正式版系统已经推出了快三周时间,苹果在新系统当中带来了诸多功能改进,包括大家盼望已久的深色模式,新的音量调节设置,自定义流量下载限制等等。除此之外&#xff…

C/C 语言中extern的用法

声明外部变量现代编译器一般采用按文件编译的方式,因此在编译时,各个文件中定义的全局变量是互相透明的,也就是说,在编译时,全局变量的可见域限制在文件内部。下面举一个简单的例子。创建一个工程,里面含有…

设置公共请求参数_封装一个useFetch实现页面销毁取消请求

前端业务经常会出现这样一类问题,当用户网速过慢或是其他特殊情况下,该页面的请求还未完成,用户就已经点击其他页面跳出去了。理想状态下请求也是应该终止掉的,所以我们应该想办法将请求和页面卸载关联在一起。1 使用AbortControl…

rx 异步执行耗时_使用rx-java的异步抽象

rx 异步执行耗时对我而言,使用Rx-java的一大好处是,无论底层调用是同步还是异步,因此代码看起来都完全相同,因此该条目的标题也是如此。 考虑一个非常简单的客户代码用例,它执行三个缓慢运行的调用并将结果合并到一个…

C语言中return的各种用法

按初学的理解,return的任务就是返回对应的参数,在外层函数中对这个参数做进一步处理。实际上return的用法不只这些。为调用的函数返回参数值此类应用最为普遍,通常是在一个具有返回值的函数中,返回一个参数值,这个返回…

代码内查找函数引用_叮~~二级操作题 excel常考函数大梳理

1.AND函数格式:AND(logical1,logical2…)功能:and函数是一个逻辑函数,表示同时满足多个条件。通常配合if函数做条件判断,得值为true或者是false。2.OR函数格式:OR(logical1,logical2…)功能:or函数是一个逻…

hazelcast入门教程_Hazelcast入门指南第6部分

hazelcast入门教程这是有关Hazelcast的一系列文章中的第六篇。 如果一个人没有看过过去的五年,请到表中的内容后 ,我创建赶上。 本地客户 在上一篇文章之后,我决定要去本地化。 是的,我将演示Hazelcast自己的Java客户端。 Java不…

总结C语言中的数组知识点

数组:只能存放一种数据类型,比如int类型的数组、float类型的数组,里面存放的数据称为“元素”。数组的定义:首先声明数组的类型,然后声明数组元素的个数,也就是定义需要多少存储空间。数组格式与初始化格式…

python学什么版本2020年_2020年了居然还有人在学Python?学python有什么用?

都2020年了居然还有人在学python?学python有什么用?真是气抖冷啊!想学习python的小伙伴,可以加裙595227871 领取免费的学习资料为什么选择python?1.行业人才的需求 在过去五年里,呈现出爆发性增长的趋势。今…

主要矛盾和次要矛盾_次要GC,主要GC与完整GC

主要矛盾和次要矛盾在使用Plumbr中的GC暂停检测功能时,我被迫通过大量有关该主题的文章,书籍和演示工作。 在整个旅程中,我多次对次要,主要和完全GC事件的使用(误用)感到困惑。 这导致了这篇博客文章&#…

action mutation 调用_Vuex源码学习(六)action和mutation如何被调用的(前置准备篇)...

module与moduleCollection你一定要会啊!Vuex源码学习(五)加工后的module在组件中使用vuex的dispatch和commit的时候,我们只要把action、mutation注册好,通过dispatch、commit调用一下方法名就可以做到。使用方式vue组件内//in vue componentt…

grunt 插件_从Grunt测试Grunt插件

grunt 插件编写针对grunt插件的测试结果比预期的要简单。 我需要运行多个任务配置,并想通过在主目录中键入grunt test来调用它们。 在第一个任务失败后,咕声通常会退出。 这使得不可能在主项目gruntfile中存储多个失败方案。 从那里运行它们将需要--for…

​嵌入式开发为什么选择C语言?

从语言特点来说C语言有出色的可移植性,能在多种不同体系结构的软/硬平台上运行。简洁紧凑,使用灵活的语法机制,并能直接访问硬件能够直接访问硬件的语言有:汇编和C语言汇编属于低级语言,难以完成一些复杂的功能&#x…