随笔分类 - JVM
摘要:引言 在Java应用程序的开发和维护过程中,了解和分析Java堆信息是一项重要的任务。本文将介绍如何获取Java堆信息的不同方法,并提供一些分析堆信息的实用技巧。 获取Java堆信息的方法 Java虚拟机(JVM)工具: 使用jcmd命令:在命令行中运行jcmd <pid> GC.heap_info
阅读全文
摘要:在设置 -Xmx 参数时,建议将其设置为系统内存的一定比例。具体的比例需要根据应用程序的特点、系统资源的限制等各种因素进行综合考虑。 如果将 -Xmx 参数设置得过小,可能会导致 JVM 分配的堆内存不足以容纳应用程序需要的对象,从而引起 OutOfMemoryError 错误。如果将 -Xmx 参
阅读全文
摘要:将 -Xms 参数设置为与 -Xmx 参数相等,相比于将 -Xms 参数设置为 -Xmx 参数的一半,具有以下优势: 1. 程序启动时间更短 当将 -Xms 参数设置为与 -Xmx 参数相等时,JVM 在启动时会分配最大内存空间,这样可以避免因为动态调整内存空间带来的时间开销。所以,相较于将 -Xm
阅读全文
摘要:在 Java 虚拟机(JVM)中,-Xms 和 -Xmx 都是用来设置 JVM 堆内存大小的参数。其中,-Xms 用于设置 JVM 启动时分配的初始堆内存大小,而 -Xmx 用于设置 JVM 堆内存的最大可用空间。默认情况下,-Xms参数的值为物理内存的1/64,-Xmx参数的值为物理内存的1/4。
阅读全文
摘要:jstat 是 Java 自带的一个命令行工具,用于监控 JVM 运行时的状态信息。它可以通过以下格式的命令来调用: jstat [option] <vmid> [<interval> [<count>]] 其中,option 表示需要查询的信息类型,如 -gc, -class, -compiler
阅读全文
摘要:线程转储(Thread Dump)就是JVM中所有线程状态信息的一次快照。 线程转储一般使用文本格式, 可以将其保存到文本文件中, 然后人工查看和分析, 或者使用工具/API自动分析。我们一般使用JDK自带的命令行工具来获取Java应用程序的线程转储。 1. JSTACK jstack 是JDK内置
阅读全文
摘要:堆转储是 JVM 中特定时刻内存中的所有对象的快照。它们对于解决内存泄漏问题并优化 Java 应用程序中的内存使用情况非常有用。 堆转储通常以二进制格式 hprof 文件存储。我们可以使用 jhat 或 JVisualVM 等工具打开和分析这些文件。 下面介绍两种堆转储的方式: 1. JCMD jc
阅读全文