登录
/
注册
首页
论坛
其它
首页
科技
业界
安全
程序
广播
Follow
关于
导读
排行榜
资讯
发帖说明
登录
/
注册
账号
自动登录
找回密码
密码
登录
立即注册
搜索
搜索
关闭
CSDN热搜
程序园
精品问答
技术交流
资源下载
本版
帖子
用户
软件
问答
教程
代码
写记录
写博客
小组
VIP申请
VIP网盘
网盘
联系我们
发帖说明
道具
勋章
任务
淘帖
动态
分享
留言板
导读
设置
我的收藏
退出
腾讯QQ
微信登录
返回列表
首页
›
业界区
›
业界
›
使用java代码获取JVM信息
使用java代码获取JVM信息
[ 复制链接 ]
接快背
2025-6-2 21:54:24
程序园永久vip申请,500美金$,无限下载程序园所有程序/软件/数据/等
转载请注明出处:
最近在环境中定位服务问题,由于服务使用的docker部署的,且使用的docker镜像,在启动之后,容器内没有jdk相关的工具【jstat、jmap等等】;于是采用 在项目中使用java类获取jvm相关信息,以下是测试的示例:
import java.lang.management.ManagementFactory;
import java.lang.management.MemoryMXBean;
import java.lang.management.MemoryUsage;
import java.lang.management.GarbageCollectorMXBean;
import java.lang.management.MemoryPoolMXBean;
import java.lang.management.ThreadMXBean;
import java.util.List;
public class GCInfoDemo {
public static void main(String[] args) {
// 获取内存管理 bean
MemoryMXBean memoryMXBean = ManagementFactory.getMemoryMXBean();
MemoryUsage heapMemoryUsage = memoryMXBean.getHeapMemoryUsage();
MemoryUsage nonHeapMemoryUsage = memoryMXBean.getNonHeapMemoryUsage();
// 打印内存信息
System.out.println("Heap Memory Usage:");
System.out.println(" Init: " + heapMemoryUsage.getInit() / (1024 * 1024) + " MB");
System.out.println(" Used: " + heapMemoryUsage.getUsed() / (1024 * 1024) + " MB");
System.out.println(" Committed: " + heapMemoryUsage.getCommitted() / (1024 * 1024) + " MB");
System.out.println(" Max: " + heapMemoryUsage.getMax() / (1024 * 1024) + " MB");
System.out.println("\nNon-Heap Memory Usage:");
System.out.println(" Init: " + nonHeapMemoryUsage.getInit() / (1024 * 1024) + " MB");
System.out.println(" Used: " + nonHeapMemoryUsage.getUsed() / (1024 * 1024) + " MB");
System.out.println(" Committed: " + nonHeapMemoryUsage.getCommitted() / (1024 * 1024) + " MB");
System.out.println(" Max: " + nonHeapMemoryUsage.getMax() / (1024 * 1024) + " MB");
// 获取垃圾回收回收器 bean 的列表
List<GarbageCollectorMXBean> gcBeans = ManagementFactory.getGarbageCollectorMXBeans();
System.out.println("\nGarbage Collectors:");
for (GarbageCollectorMXBean gcBean : gcBeans) {
System.out.println(" Name: " + gcBean.getName());
System.out.println(" Number of collections: " + gcBean.getCollectionCount());
System.out.println(" Total time spent in collections: " + gcBean.getCollectionTime() + " ms");
}
// 打印内存池信息
System.out.println("\nMemory Pools:");
for (MemoryPoolMXBean memoryPool : ManagementFactory.getMemoryPoolMXBeans()) {
System.out.println(" Name: " + memoryPool.getName());
System.out.println(" Usage: " + memoryPool.getUsage());
}
// 获取线程管理 bean
ThreadMXBean threadMXBean = ManagementFactory.getThreadMXBean();
// 获取所有线程 ID
long[] threadIds = threadMXBean.getAllThreadIds();
System.out.println("\nThreads Information:");
for (long threadId : threadIds) {
System.out.println(" Thread ID: " + threadId);
System.out.println(" Thread Name: " + threadMXBean.getThreadInfo(threadId).getThreadName());
System.out.println(" Thread State: " + threadMXBean.getThreadInfo(threadId).getThreadState());
}
// 检查死锁线程
long[] deadlockedThreads = threadMXBean.findDeadlockedThreads();
if (deadlockedThreads != null) {
System.out.println("\nDeadlocked Threads:");
for (long deadlockedThreadId : deadlockedThreads) {
System.out.println(" Deadlocked Thread ID: " + deadlockedThreadId);
System.out.println(" Thread Name: " + threadMXBean.getThreadInfo(deadlockedThreadId).getThreadName());
}
} else {
System.out.println("\nNo deadlocked threads found.");
}
}
}
复制代码
获取GC信息
通过ManagementFactory.getGarbageCollectorMXBeans()获取所有垃圾回收器的监控Bean。
每个GarbageCollectorMXBean提供:
getName():GC算法名称(如G1 Young Generation)
getCollectionCount():回收次数
getCollectionTime():累计耗时(毫秒)
2.打印当前线程信息:
使用 ThreadMXBean 获取当前线程的所有 ID,并通过 getThreadInfo 方法获取每个线程的信息,包括线程名字和状态。
3.检查死锁线程:
使用 findDeadlockedThreads 方法检查 JVM 中的死锁情况。如果有死锁线程,则输出这些线程的 ID 和名称。如果没有,则输出相应的消息。
Heap Memory Usage:
Init: 508 MB
Used: 10 MB
Committed: 487 MB
Max: 7205 MB
Non-Heap Memory Usage:
Init: 2 MB
Used: 4 MB
Committed: 7 MB
Max: 0 MB
Garbage Collectors:
Name: PS Scavenge
Number of collections: 0
Total time spent in collections: 0 ms
Name: PS MarkSweep
Number of collections: 0
Total time spent in collections: 0 ms
Memory Pools:
Name: Code Cache
Usage: init = 2555904(2496K) used = 1235968(1207K) committed = 2555904(2496K) max = 251658240(245760K)
Name: Metaspace
Usage: init = 0(0K) used = 3597432(3513K) committed = 4980736(4864K) max = -1(-1K)
Name: Compressed Class Space
Usage: init = 0(0K) used = 392584(383K) committed = 524288(512K) max = 1073741824(1048576K)
Name: PS Eden Space
Usage: init = 133169152(130048K) used = 10914704(10658K) committed = 133169152(130048K) max = 2789212160(2723840K)
Name: PS Survivor Space
Usage: init = 22020096(21504K) used = 0(0K) committed = 22020096(21504K) max = 22020096(21504K)
Name: PS Old Gen
Usage: init = 355467264(347136K) used = 0(0K) committed = 355467264(347136K) max = 5666504704(5533696K)
Threads Information:
Thread ID: 6
Thread Name: Monitor Ctrl-Break
Thread State: RUNNABLE
Thread ID: 5
Thread Name: Attach Listener
Thread State: RUNNABLE
Thread ID: 4
Thread Name: Signal Dispatcher
Thread State: RUNNABLE
Thread ID: 3
Thread Name: Finalizer
Thread State: WAITING
Thread ID: 2
Thread Name: Reference Handler
Thread State: WAITING
Thread ID: 1
Thread Name: main
Thread State: RUNNABLE
No deadlocked threads found.
Process finished with exit code 0
复制代码
来源:程序园用户自行投稿发布,如果侵权,请联系站长删除
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
使用
java
代码
获取
JVM
相关帖子
poloapi 深度测评:99.8% 可用性 + 零代码迁移,AI 开发成本砍半
1.java基本语法
记录 Windows系统开启hyper-v ,部分端口被保留,导致端口不能使用而报错的问题
Claude Code 使用 Skills
如何使用DashVector的多向量检索
Java 25 (LTS) 重磅发布:AI、性能、安全全面革新,新手入门门槛再创新低!
Java 25 (LTS) 重磅发布:AI、性能、安全全面革新,新手入门门槛再创新低!
Java Optional 完全指南:优雅处理 null 的利器
追踪链路--使用iptables/ipvs来记录后端pod真实ip
上下文协议(MCP)Java SDK 指南
回复
使用道具
举报
提升卡
置顶卡
沉默卡
喧嚣卡
变色卡
千斤顶
照妖镜
相关推荐
安全
poloapi 深度测评:99.8% 可用性 + 零代码迁移,AI 开发成本砍半
0
339
遑盲
2025-12-15
安全
1.java基本语法
0
519
每捎京
2025-12-15
安全
记录 Windows系统开启hyper-v ,部分端口被保留,导致端口不能使用而报错的问题
0
203
溜椎干
2025-12-15
安全
Claude Code 使用 Skills
1
221
王妍芳
2025-12-16
业界
如何使用DashVector的多向量检索
0
252
别萧玉
2025-12-16
安全
Java 25 (LTS) 重磅发布:AI、性能、安全全面革新,新手入门门槛再创新低!
0
236
褐洌
2025-12-16
安全
Java 25 (LTS) 重磅发布:AI、性能、安全全面革新,新手入门门槛再创新低!
0
293
肿圬后
2025-12-16
业界
Java Optional 完全指南:优雅处理 null 的利器
0
962
古修蟑
2025-12-17
业界
追踪链路--使用iptables/ipvs来记录后端pod真实ip
0
784
硫辨姥
2025-12-17
业界
上下文协议(MCP)Java SDK 指南
0
287
豌笆
2025-12-17
回复
(6)
倡粤
2025-10-14 00:40:44
回复
使用道具
举报
照妖镜
猛犸象科技工作室:
网站开发,备案域名,渗透,服务器出租,DDOS/CC攻击,TG加粉引流
分享、互助 让互联网精神温暖你我
客臂渐
2025-11-8 06:15:13
回复
使用道具
举报
照妖镜
程序园永久vip申请,500美金$,无限下载程序园所有程序/软件/数据/等
分享、互助 让互联网精神温暖你我
湄圳啸
2025-11-11 04:01:08
回复
使用道具
举报
照妖镜
程序园永久vip申请,500美金$,无限下载程序园所有程序/软件/数据/等
感谢分享,下载保存了,貌似很强大
予捻
2025-12-9 12:56:28
回复
使用道具
举报
照妖镜
猛犸象科技工作室:
网站开发,备案域名,渗透,服务器出租,DDOS/CC攻击,TG加粉引流
谢谢分享,辛苦了
颖顿庐
7 天前
回复
使用道具
举报
照妖镜
程序园永久vip申请,500美金$,无限下载程序园所有程序/软件/数据/等
过来提前占个楼
贺蛟亡
5 天前
回复
使用道具
举报
照妖镜
猛犸象科技工作室:
网站开发,备案域名,渗透,服务器出租,DDOS/CC攻击,TG加粉引流
yyds。多谢分享
浦乐
3 天前
回复
使用道具
举报
照妖镜
程序园永久vip申请,500美金$,无限下载程序园所有程序/软件/数据/等
过来提前占个楼
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
|
立即注册
回复
本版积分规则
回帖并转播
回帖后跳转到最后一页
签约作者
程序园优秀签约作者
发帖
接快背
3 天前
关注
0
粉丝关注
12
主题发布
板块介绍填写区域,请于后台编辑
财富榜{圆}
3934307807
991124
anyue1937
9994893
kk14977
6845358
4
xiangqian
638210
5
韶又彤
9997
6
宋子
9982
7
闰咄阅
9993
8
刎唇
9993
9
俞瑛瑶
9998
10
蓬森莉
9951
查看更多
今日好文热榜
102
ROS2概念之DDS
124
具身智能:零基础入门睿尔曼机械臂(四)—
392
Streamlit + LangChain 1.0 简单实现智能问
477
Oracle性能诊断与SQL优化:从9i到19c的技术
914
具身智能:零基础入门睿尔曼机械臂(五)—
220
NGD-SLAM(二)
397
[表单]HTML Learn Data Day 1
162
Oracle等待事件:性能诊断与优化的核心指南
591
“静态回调+上下文指针”模式实现回调机制
106
从 Tool Calling 到 A2A,再到 MCP. 大模型
379
BUUCTF 0ctf_2018_heapstorm2 PWN house of
294
仅通过一句提示词,就可以让大模型变得更有
984
生成式引擎优化(GEO优化)全维度技术指南
548
GEO优化实战指南2025:六大服务商核心能力
763
原始类型与泛型对比笔记
687
印度股票数据 API 对接实战指南(含实时行
661
Apipost分支功能:为API开发打造专属的成本
332
OpenCVSharp:学习人脸检测例子
553
JSAPIThree 加载单体三维模型学习笔记:Sim
127
读捍卫隐私09匿名指南