java 监控 native 内存_JVM内存使用情况监控

本文详细介绍了JVM运行时内存监控,包括如何使用jmap、jstack、jstat等工具来查看内存占用、线程状态和系统资源。此外,还讨论了Java应用程序中本机内存的主要分配源,如Metaspace、线程、Code Cache等,并提供了如何通过JVM调优标志进行内存跟踪的方法。最后,提到了NMT(本机内存跟踪)在监控本机内存分配中的作用,以及如何通过jcmd进行详细分析。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

详解JVM 运行时内存使用情况监控

java 语言, 开发者不能直接控制程序运行内存, 对象的创建都是由类加载器一步步解析, 执行与生成与内存区域中的; 并且jvm有自己的垃圾回收器对内存区域管理, 回收; 但是我们已经可以通过一些工具来在程序运行时查看对应的jvm内存使用情况, 帮助更好的分析与优化我们的代码;

注: 查看系统里java进程信息

// 查看当前机器上所有运行的java进程名称与pid(进程编号)

jps -l

// 显示指定的jvm进程所有的属性设置和配置参数

jinfo pid

1 . jmap : 内存占用情况查询 (位于”jdk_home/bin”目录下)

// 查询某个pid进程对应的应用程序内存占用情况

jmap -heap pid

// 示例

jmap -heap 5940

Attaching to process ID 5940, please wait...

Debugger attached successfully.

Server compiler detected.

JVM version is 25.92-b14

using thread-local object allocation.

Parallel GC with 4 thread(s)

Heap Configuration:

MinHeapFreeRatio = 0

MaxHeapFreeRatio = 100

MaxHeapSize = 734003200 (700.0MB)

NewSize = 44040192 (42.0MB)

MaxNewSize = 244318208 (233.0MB)

OldSize = 88080384 (84.0MB)

NewRatio = 2

SurvivorRatio = 8

MetaspaceSize = 21807104 (20.796875MB)

CompressedClassSpaceSize = 1073741824 (1024.0MB)

MaxMetaspaceSize = 17592186044415 MB

G1HeapRegionSize = 0 (0.0MB)

Heap Usage:

PS Young Generation

Eden Space:

capacity = 32505856 (31.0MB)

used = 13906760 (13.262519836425781MB)

free = 18599096 (17.73748016357422MB)

42.782322052986395% used

From Space:

capacity = 6291456 (6.0MB)

used = 294912 (0.28125MB)

free = 5996544 (5.71875MB)

4.6875% used

To Space:

capacity = 7340032 (7.0MB)

used = 0 (0.0MB)

free = 7340032 (7.0MB)

0.0% used

PS Old Generation

capacity = 41943040 (40.0MB)

used = 6127536 (5.8436737060546875MB)

free = 35815504 (34.15632629394531MB)

14.609184265136719% used

8535 interned Strings occupying 710344 bytes.

2 . jstack : 进程所包含线程情况查询 (位于”jdk_home/bin”目录下)

// 命令帮助

jstach -h

// 显示进程详情

jstack pid

// 示例

jstach 5940

Full thread dump Java HotSpot(TM) 64-Bit Server VM (25.92-b14 mixed mode):

"RMI TCP Connection(10)-10.2.13.162" #32 daemon prio=5 os_prio=0 tid=0x00000000179dc000 nid=0x1f60 in Object.wait() [0x000000001d7dd000]

java.lang.Thread.State: TIMED_WAITING (on object monitor)

at java.lang.Object.wait(Native Method)

at com.sun.jmx.remote.internal.ArrayNotificationBuffer.fetchNotifications(ArrayNotificationB

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值