什么是 Java 虚拟机(JVM)中的垃圾收集(GC)日志、线程转储和堆转储?【JVM生成的3种文件,你都见过吗?】Java 虚拟机(JVM)生成3个关键文件,这些文件对于JVM优化性能和解决生产问题非常有用 。这些文件是:
- (GC) Garbage collection log 垃圾收集日志
- Thread Dump 线程转储
- Heap Dump 堆转储
Garbage Collection Log (垃圾收集日志)什么是 GC LogGC 日志包含垃圾收集事件的相关信息 。它将指示运行了多少 GC 事件、它们是什么类型的 GC 事件(即 Young GC 或 Full GC)、每个 GC 事件暂停应用程序的时间、每个 GC 事件回收了多少对象 。
GC 日志长什么样?可以在这里找到一个垃圾收集日志文件示例:
日志示例
分析GC 日志能查看出什么问题 ?垃圾收集日志用于研究应用程序的 GC 和内存性能 。它用于优化 GC 暂停时间,用于确定应用程序的最佳内存大小,还用于排除与内存相关的问题
如何生成 GC 日志?您可以通过传递以下 JVM 参数来生成垃圾收集日志:对于 JAVA8:
-XX:+PrintGCDetails-XX:+PrintGCDateStamps-Xloggc:<file-path>
从9开始的 Java 版本:-Xlog:gc*:file=<file-path>
File-path: 是将要写入垃圾收集日志文件的位置 。如何理解 GC 日志?垃圾收集日志的格式因 JVM 供应商的不同而不同(Oracle、 HP、 IBM、....,Java version (1.5,5,6,7,8,9,10,11,12,...) ,垃圾收集算法(Serial,Parallel,CMS,G1....和 JVM 各种参数 。因此,没有一种可用的标准格式.不过这里有一个教程可以帮助你理解GC日志:link
用什么工具来分析 GC 日志?有多个垃圾收集日志分析工具 。这里给出一些流行的例子: GCeasy,IBM GC & Memory visualizer,HP JMeter,google Garbage Cat 。
线程转储(Thread dump)什么是 Thread dump?线程转储是应用程序中在某个时间点上运行的所有线程的快照 。它包含应用程序中每个线程的所有信息,例如: 线程状态、线程 Id、本机 Id、线程名称、堆栈跟踪、优先级 。
线程转储文件长什么样?示例线程转储文件可以在这里找到:
文件示例
线程转储文件能解决什么问题?线程转储文件主要用于排除生产问题,例如 CPU 峰值、应用程序中的无响应性、响应时间差、线程挂起、高内存消耗 。
如何生成线程转储文件?使用线程转储最常见的选择是使用“ jstack”工具 。Jstack 工具是在 JDK_homebin 文件夹中提供的 。命令:
jstack -l <pid> > <file-path>
其中 pid: 是应用程序的进程 Id,应该捕获其线程转储,file-path: 是将线程转储写入的文件路径 。用什么工具来分析线程转储文件?以下是使用最广泛的线程转储分析工具:
fastThread
、 Samurai
、 IBM Thread & Monitor analyzer
、 Visual VM
堆转储(Heap dump)什么是堆转储?堆转储是应用程序内存在某个时间点上的快照 。它包含诸如内存中的对象是什么,它们携带什么值,它们的大小是什么,它们引用什么其他对象等信息 。
堆转储看起来长什么样?这里可以找到一个示例堆转储 。示例文件
(注意: 它将是二进制格式的 。所以你实际上不能阅读它)
分析堆转储能解决什么问题?堆转储主要用于排除与内存有关的 OutOfMemoryError 问题
如何生成堆转储文件?使用堆转储最常见的选择是使用“ jmap”工具 。Jmap 工具是在 JDK_homebin 文件夹中提供的
jmap -dump:format=b,file=<file-path>[pid]其中 pid: 是 Java 进程 Id ,file-path: 是将堆转储写入的文件路径 。
如何分析和理解 Heap dump 用什么工具来分析 ??堆转储文件采用二进制格式,并且大小往往很大 。除此之外,他们的格式严重缺乏文档 。因此,您必须使用堆转储分析工具,最广泛的堆转储分析工具有: Eclipse MAT、 HeapHero 和 JVisualVM 。推荐阅读
- 与知己知彼将心比心意思相近的话语-知己知彼,将心比心下一句是什么-
- 2020年最走心的经典句子短句?2020年最火的的句子
- 如何设置路由器的防蹭网功能?
- 不忘过去的人故事?不忘过去的人故事中老大的愿望是什么
- 阿里大牛纯CSS实现了常见的UI效果,不信你看
- 大唐文成公主是谁的女儿 唐朝文成公主
- Apache Druid 高性能的实时分析型数据库
- 关于交换机的一些常用术语你是否了解?
- 薛仁贵三箭定江山的故事 薛仁贵三箭定天山道理和启发
- 天贶节是什么节日 天贶节又叫什么节