这段时间觉得很有必要对java的内存分析工具进行熟悉,这样以后出现机器负载较高,或者反应很慢的时候,我就可以查找原因了。上网搜了搜,发现下面这些是比较常用的,然后我在机器上试试了,把结果也贴出来哈。

1.jps

类似ps -ef|grep java 显示java进程号

或者pgrep java

2.jstack

打印jvm内存的堆栈信息,打印出来的结果类似

2010-04-21 20:10:51

Full thread dump Java HotSpot(TM) Server VM (10.0-b23 mixed mode):

“RMI TCP Connection(idle)” daemon prio=10 tid=0x08f7a000 nid=0x1928 waiting on condition [0x4b234000..0x4b2350a0]

java.lang.Thread.State: TIMED_WAITING (parking)

at sun.misc.Unsafe.park(Native Method)

– parking to wait for <0x68ec3430> (a java.util.concurrent.SynchronousQueue$TransferStack)

at java.util.concurrent.locks.LockSupport.parkNanos(LockSupport.java:198)

at java.util.concurrent.SynchronousQueue$TransferStack.awaitFulfill(SynchronousQueue.java:424)

at java.util.concurrent.SynchronousQueue$TransferStack.transfer(SynchronousQueue.java:323)

at java.util.concurrent.SynchronousQueue.poll(SynchronousQueue.java:874)

at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:944)

at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:906)

at java.lang.Thread.run(Thread.java:619)

“Attach Listener” daemon prio=10 tid=0x08a08800 nid=0x18e4 runnable [0x00000000..0x4b142068]

java.lang.Thread.State: RUNNABLE

“recvMsgTP-1_sharereport_groupId_refund_[daily]-33040763-3-thread-10” prio=10 tid=0x08f3d400 nid=0x2985 waiting on condition [0x4b192000..0x4b192fa0]

java.lang.Thread.State: WAITING (parking)

at sun.misc.Unsafe.park(Native Method)

– parking to wait for <0x6af53cd8> (a java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject)

at java.util.concurrent.locks.LockSupport.park(LockSupport.java:158)

at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:1925)

at java.util.concurrent.LinkedBlockingQueue.take(LinkedBlockingQueue.java:358)

at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:946)

at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:906)

at java.lang.Thread.run(Thread.java:619)

这样我们可以根据打印结果,看到现在哪些线程在运行,哪些在等待, 进而再找到线程等待执行的原因,从而分析出程序执行变慢的原因。

3.jstat -gcutil

对java 垃圾回收信息的统计,这样我们可以得到垃圾回收是否正常,full GC的执行时间和频率是否正常等。

S0 S1 E O P YGC YGCT FGC FGCT GCT

8.34 0.00 53.24 13.14 51.77 74 7.596 28 25.099 32.695

8.34 0.00 53.54 13.14 51.77 74 7.596 28 25.099 32.695

8.34 0.00 53.93 13.14 51.77 74 7.596 28 25.099 32.695

8.34 0.00 53.93 13.14 51.77 74 7.596 28 25.099 32.695

8.34 0.00 53.93 13.14 51.77 74 7.596 28 25.099 32.695

8.34 0.00 53.97 13.14 51.77 74 7.596 28 25.099 32.695

8.34 0.00 53.98 13.14 51.77 74 7.596 28 25.099 32.695

8.34 0.00 53.98 13.14 51.77 74 7.596 28 25.099 32.695

8.34 0.00 53.98 13.14 51.77 74 7.596 28 25.099 32.695

8.34 0.00 54.01 13.14 51.77 74 7.596 28 25.099 32.695

8.34 0.00 54.40 13.14 51.77 74 7.596 28 25.099 32.695

后面加T表示的是Time 执行时间,单位是秒

YGC FGC 分别是young GC和Full GC执行的次数。

4.jinfo – flags

可以查询java运行的参数设置

Attaching to process ID 21982, please wait…

Debugger attached successfully.

Server compiler detected.

JVM version is 10.0-b23

-Dprogram.name=run.sh -Xms1024m -Xmx1024m -XX:NewSize=320m -XX:MaxNewSize=320m -XX:PermSize=96m -XX:MaxPermSize=96m -Djava.awt.headless=true -Dsun.net.client.defaultConnectTimeout=10000 -Dsun.net.client.defaultReadTimeout=30000 -Xdebug -Xrunjdwp:transport=dt_socket,address=18787,server=y,suspend=n -Djava.net.preferIPv4Stack=true

5.jmap

-histo

打印出java中的对象信息,包括实例个数,字节大小和完整类名。

num #instances #bytes class name

———————————————-

1: 660495 66381608 [C

2: 134119 34894408 [B

3: 73441 30779672 [I

4: 670401 16089624 java.lang.String

5: 125062 15547312

6: 427296 13673472 java.util.TreeMap$Entry

7: 328585 13143400 java.util.concurrent.ConcurrentHashMap$EntryIterator

8: 125062 10010904

9: 132205 8504792 [Ljava.lang.Object;

10: 173806 7883528

这些命令后面都要加上java进程号。

java 自带thread分析工具_java自带的jvm分析工具相关推荐

  1. java性能检测工具_Java自带的性能监测工具之jmap

    本文继续介绍Java自带的性能监测工具,本文使用jmap工具来玩~ jmap (Java Memory Map) 命令可以生成Java应用程序的堆快照和对象统计信息,对生成的堆快照进行分析,可以分析堆 ...

  2. java thread 内存泄露_Java ThreadLocal 内存泄露问题分析及解决方法。

    前言 在分析ThreadLocal导致的内存泄露前,需要普及了解一下内存泄露.强引用与弱引用以及GC回收机制,这样才能更好的分析为什么ThreadLocal会导致内存泄露呢?更重要的是知道该如何避免这 ...

  3. java gc检测工具_Java自带的性能监测工具之jstat

    本文使用jstat命令工具~ jstat简介 jstat (Java Virtual Machine Statistics Monitoring Tool) 是一个可以用于观察Java应用程序运行时信 ...

  4. java导出html word文档_java生成带html样式的word文件

    最近在项目中需要将通过富文本编辑器处理过的文字转换为Word,查了很久,大家通常的解决办法是使用Jacob或POI等组件直接生成Word,但是都无法将富文本编辑器处理过的文字保留样式并保存为Word, ...

  5. java 开发人员工具_Java开发人员的5种工具

    java 开发人员工具 改善我们编写的Java代码的一种方法是使用最好的工具. 因此,让我们看看IDR Solutions建议使用的5种最常用的工具来帮助Java开发人员编写更好的代码. 查找错误 F ...

  6. java html 字符串截取字符串长度_Java截取带html标签的字符串,再把标签补全(保证页面显示效果)...

    一般是用在字符串中有html标签的截取. 如: 后台发布用了在线编辑器, 前台显示内容要截取的情况. import Java.util.ArrayList; import java.util.List ...

  7. java需要会的工具_Java开发者必备的几款工具,一定要掌握!

    原标题:Java开发者必备的几款工具,一定要掌握! Notepad++ Notepad++是用于编辑xml.脚本以及记笔记的最佳工具.这个工具的最好部分在于,你在Notepad++上打开的任何一个文档 ...

  8. java 读取配置文件工具_java读取配置文件信息properties的工具类

    java读取配置文件信息properties的工具类,介绍一个工具PropertyReader.java,读取项目配置文件信息 package mymail; import java.io.File; ...

  9. java监听适配器是什么_JAVA 监听器与适配器 小小的分析

    监听器和适配器是Java图形用户界面(GUI,Graphics User interface)设计的抽象窗口工具集(AWT,Abstract Window Toolkit)的两个重要概念,他们都在ja ...

最新文章

  1. 面试mysql慢查询_剑指Offer面试题:如何定位并优化慢查询sql
  2. 磁共振线圈分类_收藏:磁共振检查序列及临床应用总结
  3. C# FileSystemWatcher文件监控实例
  4. Thread系列——ThreadPool
  5. Machine Learning Mastery 博客文章翻译:XGBoost
  6. C++监控注册表信息
  7. 聚类算法 距离矩阵_论文阅读9——AP聚类算法
  8. NLP之电影评分数据的情感分析
  9. 染成茜色的坂道 文本提取(导出)方法
  10. 老男孩Python 第7期 老男孩Python培训视频教程
  11. 计算机课程表怎么制作,制作我的课程表(教案)
  12. 飞机大战(简单版)(C/C++) (VS)
  13. 计算机三级路由器配置例题,计算机三级网络技术(7):路由器配置及使用(上)...
  14. 高中数学:数列求和的8种常用方法(最全)
  15. pearlovell
  16. maven使用modules、parent标签时遇到的问题
  17. 三菱PLC 通讯 python代码
  18. mongodb数据库添加账号
  19. 《网络安全应急响应技术实战指南》知识点总结(第9章 数据泄露网络安全应急响应)
  20. ListView抖动的解决办法

热门文章

  1. date类型_06076.1.0如何将ORC格式且使用了DATE类型的Hive表转为Parquet表
  2. 、|| 和 、| 的区别(详尽版)
  3. 算法(2)KMP算法
  4. iOS后台持续定位并定时上传
  5. 3.7Python数据处理篇之Numpy系列(七)---Numpy的统计函数
  6. DOM---文档对象模型(Document Object Model)的基本使用
  7. ACM-ICPC历届世界总冠军名单1977-2015
  8. Android类库打包方法探究
  9. 使用dom4j解析XML例子
  10. 拦截器与filter的区别