java打印线程堆栈_java内存文件jump和线程堆栈输出

概述

某天系统响应变慢需要分析原因,也许我们马上会想起java core分析三板斧,top、pid等等定位到线程使用jstack命令输出线程堆栈。那么如果是内存回收不掉的情况呢?也许你的系统已配置-XX HeapDumOnMemoryError,

-XX HeapDumpPath=XXX,但是一旦如果你没设置而且系统并没内存溢出,只是响应慢,回收不理想呢?这时候用什么命令呢?当然这个可以现查现用,但如果是在面试呢?也许你知道但是不记得了,但这个简单问题很可能直接会让面试官认为你没做过或者不知道,所以简单整理一下。

总结

一、jmap命令解析与使用

jmap -heap [pid] 查询内存使用情况

[root@fengniaoweb ~]# jmap -heap 2865

Attaching to process ID 2865, please wait...

Debugger attached successfully.

Server compiler detected.

JVM version is 25.211-b12

using thread-local object allocation.

Parallel GC with 4 thread(s)

Heap Configuration:

MinHeapFreeRatio = 0

MaxHeapFreeRatio = 100

MaxHeapSize = 268435456 (256.0MB)

NewSize = 42991616 (41.0MB)

MaxNewSize = 89128960 (85.0MB)

OldSize = 87031808 (83.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 = 88080384 (84.0MB)

used = 86317448 (82.31873321533203MB)

free = 1762936 (1.6812667846679688MB)

97.99849192301433% used

From Space:

capacity = 524288 (0.5MB)

used = 32768 (0.03125MB)

free = 491520 (0.46875MB)

6.25% used

To Space:

capacity = 524288 (0.5MB)

used = 0 (0.0MB)

free = 524288 (0.5MB)

0.0% used

PS Old Generation

capacity = 179306496 (171.0MB)

used = 74843440 (71.37626647949219MB)

free = 104463056 (99.62373352050781MB)

41.74050671315332% used

26363 interned Strings occupying 3142776 bytes.

要注意的是在使用CMS GC 情况下,jmap -heap的执行有可能会导致JAVA 进程挂起

jmap -histo [pid] 查看JVM堆中对象详细占用情况

// 限于篇幅仅粘贴示例

3007: 1 16 [Lorg.aspectj.weaver.ast.Var;

3008: 1 16 [Lorg.aspectj.weaver.patterns.AnnotationTypePattern;

3009: 1 16 [Lorg.aspectj.weaver.patterns.BindingPatte

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值