当前位置:首页 > 内存 > 正文

查看java进程内存使用率

  • 内存
  • 2024-09-06 06:16:10
  • 9623

一、java内存诊断软件?

每个Java进程都有自己的内存池和使用空间,这意味着会出现内存使用错误等问题。此时我们需要对Java内存进行诊断和分析。今天,昌平Java培训正在进行中。有什么软件可以进行内存诊断。


Java堆:分析来自诊断


堆转储分析


堆转储可以使用以下方法进行分析工具:


EclipseMAT(MemoryAnalyzerTool)是社区开发的用于分析堆转储的工具。它提供了一些有趣的功能,包括:可疑泄漏:它检测堆转储中的可疑泄漏,持续报告内存中的大量对象;


柱状图:列出每个类的对象数量、浅(shallow)大小以及这些对象所占用的堆。可以使用正则表达式轻松对直方图对象进行排序和过滤。这使我们能够放大并专注于我们怀疑的泄漏。它还比较两个堆转储的直方图,显示每个类的实例数量的差异。这可以帮助我们找到Java堆中快速增长的对象,并进一步探索以确定堆中包含这些对象的根;


对象不可访问:MAT有一个很好的功能,即它允许在其工作对象中包含或排除不可访问/死亡对象。如果您不想查看不可访问的对象,即将在下一个GC周期中收集的对象,而只担心可访问的对象,那么此功能非常方便;


重复类:显示多个类加载器加载的重复类;


GC根路径:可以显示GC根的引用字符串(保持活动状态的对象)由JVM本身),这些GCroot负责将对象保留在堆中;


OQL:我们可以使用对象查询语言(ObjectQueryLanguage)来探索堆转储中的对象。它丰富了OQL基础设施,允许我们编写复杂的查询,并帮助我们更好地理解转储的内部组件。


JavaVisualVM:用于监视、分析Java语言并排除故障的独特工具。它作为JDK工具的一部分提供,也可以从GitHub下载。它提供的功能之一是堆转储分析。它能够创建受监控应用程序的堆转储,以及加载和分析它们。从堆中,它可以显示类、类实例的直方图,还可以找到特定实例的GC根;jhat命令(在/bin文件夹中)提供堆转储分析功能,可以在任何浏览器中显示堆转储对象。默认情况下,Web服务器将在端口7000上启动。jhat支持多种预定义查询和对象查询语言,以便更轻松地解析堆转储中的对象;



JavaMissionControl的JOverflow插件(JavaMissionControl):这是一个实验性插件,允许JavaMissionControl执行简单的堆转储分析并报告可能的内存浪费;


您的工具包是一个商业Javaprofiler,它有一个堆转储分析器,并且具有其他工具提供的几乎所有功能。另外,YourKit还提供了:


可达性范围:它不仅可以列出可访问和不可访问的对象,还可以根据可访问范围显示它们的分布,即高度可访问、弱/软可访问或不可访问;


内存分析器:YourKit有而不是一整套内置查询。使用即席查询功能,YourKit查询可以探测内存、查找反模式并分析常见内存问题的原因和解决方案。



二、怎么查看java程序运行的峰值内存消耗(含虚拟机)和CPU消耗(ms)

如何查看正在运行的Java程序的最大内存消耗(包括虚拟机)和CPU消耗(毫秒):

使用jdk附带的工具。

在命令行中输入。

将出现一个窗口。

根据进程号选择要监控的虚拟机。

>

可以看到内存占用情况、线程情况以及各种对象定义。