Jvm虚拟机参数调优教程 一jmap1jmap -histo 进程号此命令可以用来查看内存信息实例个数以及占用内存大小jmap -histo 进程号 ./log.txt打开log文件如下num序号instances实例数bytes占用空间大小class name类名称 [C is a char[] [S is a short[] [I is a int[]2jmap -heap 进程号查看堆内存信息3堆内存dumpjmap -dump:formatb,filetest.hprof 进程号也可以设置内存溢出自动导出dump文件内存很大的时候可能会导不出来-XX:HeapDumpOnOutOfMemoryError-XX:HeapDumpPath./ 路径4冷知识如果在jmap命令查询结果中发现某个对象特别多特别大但是具体在代码中找不到产生的地方那么可以这么想既然产生的那么多那执行这段逻辑的代码肯定占用cpu比较多使用jstack命令或者导出dump文件导入jdk的VisualVM工具中抽样器的CPU中可以看出耗时很长的地方从而快速定位到代码位置。二jstack1jstack 进程号查看进程信息如果进程中存在线程死锁那么输出的结果最后会直接给出来具体死锁线程信息和线程的堆栈信息Thread-1线程名prio5优先级5tid0x00000001fa9e000 线程idnid0x2d64 线程对应的本地线程标识nidBLOCKED线程状态2jstack找出cpu最高的线程堆栈信息1使用命令top -ppid显示你的java进程的内存情况 pid是进程号2按H获取每个线程的内存情况3找到内存和cpu占用占用最高的线程tid4转16进制得到0x4cd05执行jstackpid| grep -A 10 0x4cd0得到线程堆栈信息中0x4cd0这个线程所在行的最后10行从堆栈中可以发现导致cpu飙高的调用方法6查看堆栈信息找出可能存在问题的代码三jinfo1jinfo -flags 进程号查看正在运行的Java应用程序的扩展参数查看jvm的参数jinfo -flags 进程号2jinfo -sysprops 进程号查看java系统参数jinfo -sysprops 进程号四jstat非常重要jstat命令可以查看堆内存各部分的使用量以及加载类的数量。命令格式如下jstat [-命令选项] [vmid] [间隔时间毫秒] [查询次数]注意使用的jdk版本是1.81垃圾回收统计jstat -gc pid 最常用可以评估程序内存使用及GC压力整体情况S0C第一个幸存区的大小单位KBS1C第二个幸存区的大小S0U第一个幸存区的使用大小S1U第二个幸存区的使用大小EC伊甸园区的大小EU伊甸园区的使用大小OC老年代大小MC方法去大小元空间MU方法区使用大小CCSC压缩类空间大小CCSU压缩类空间使用大小YGC年轻代垃圾回收次数YGCT年轻代垃圾回收消耗时间单位SFGC老年代垃圾回收次数FGCT老年代垃圾回收消耗时间单位SGCT垃圾回收消耗总时间单位Sjstat -gc 1000 10 每一秒执行一次共执行十次五阿里巴巴Arthas调优工具Arthas是阿里巴巴在2018年9月开源的Java诊断工具支持jdk6采用命令行交互模式可以方便的定位诊断线上程序运行问题。Arthas官方文档十分详细详见https://alibaba.github.io/arthas1arthas使用github下载arthaswget https://alibaba.github.io/arthas/arthas-boot.jargitee下载arthaswget https://arthas.gitee.io/arthas-boot.jar用java -jar运行即可可以识别机器上所有java进程

相关新闻

最新新闻

llama.cpp MUSA后端编译指南:卡住构建的3个坑,一条自查路径走通

llama.cpp MUSA后端编译指南:卡住构建的3个坑,一条自查路径走通

llama.cpp MUSA后端编译指南:卡住构建的3个坑,一条自查路径走通 【免费下载链接】llama.cpp LLM inference in C/C 项目地址: https://gitcode.com/GitHub_Trending/ll/llama.cpp 想在 MUSA GPU 上跑 llama.cpp,编译阶段会撞上三个几乎…

2026/8/28 12:50:04
SQL调优组合拳:Django-MySQL查询提示与pt-visual-explain执行计划可视化指南

SQL调优组合拳:Django-MySQL查询提示与pt-visual-explain执行计划可视化指南

SQL调优组合拳:Django-MySQL查询提示与pt-visual-explain执行计划可视化指南 【免费下载链接】django-mysql :dolphin: :horse: Extensions to Django for use with MySQL/MariaDB 项目地址: https://gitcode.com/gh_mirrors/dj/django-mysql Django-MySQL 是…

2026/8/28 12:50:04
安全代码协作的接口边界

安全代码协作的接口边界

安全代码协作的接口边界技术范围 接口契约需要同时定义字段、生命周期和错误语义。实现细节不应泄漏给调用方,版本演进必须有清楚的兼容策略。 记录应能让接手的人复现当时的判断。 接口之外还要约定责任 把接口所有者、变更流程、SLO、告警接收人和兼容期写清楚。产…

2026/8/28 12:50:04
Browser-Use 文件下载自动化实战:2个参数跑通全链路

Browser-Use 文件下载自动化实战:2个参数跑通全链路

Browser-Use 文件下载自动化实战:2个参数跑通全链路 【免费下载链接】browser-use 🌐 Make websites accessible for AI agents. Automate tasks online with ease. 项目地址: https://gitcode.com/GitHub_Trending/br/browser-use 让 Agent 去 f…

2026/8/28 12:50:04
存储与调用链的排障证据

存储与调用链的排障证据

存储与调用链的排障证据技术范围 可观测性应让一次请求跨越入口、排队、关键调用和结束状态时仍可追踪。日志、指标和 Trace 各自承担不同的证据职责。 先覆盖高风险路径,避免用主流程代替完整验证。 先定义排障时需要回答的问题 日志用于解释单次请求发生了什么&am…

2026/8/28 12:50:04
不依赖锂钴镍:低成本材料电池技术路线与商业化

不依赖锂钴镍:低成本材料电池技术路线与商业化

如果你关注电池行业,大概率清楚锂电原材料这两年经历了什么。碳酸锂价格从几万块一吨冲到六十万,再快速回落,做储能和电动车的朋友应该记忆犹新。恰恰是这种大起大落,让“New Battery Could Be Made From Abundant Low-Cost Mater…

2026/8/28 12:45:03