以下数据使用Jconsole转储文件中得来,不同的工具,不同的虚拟机得到的具体信息可能有差别

栈转储信息

转储方式

通过Jconsole工具(或者其他分析工具)

"Signal Dispatcher" #4 daemon prio=9 os_prio=2 tid=0x142b7400 nid=0x280 runnable [0x00000000]

java.lang.Thread.State: RUNNABLE

Locked ownable synchronizers:

- None

"Finalizer" #3 daemon prio=8 os_prio=1 tid=0x14276800 nid=0x9e0 in Object.wait() [0x1458f000]

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

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

- waiting on <0x094678d8> (a java.lang.ref.ReferenceQueue$Lock)

at java.lang.ref.ReferenceQueue.remove(Unknown Source)

- locked <0x094678d8> (a java.lang.ref.ReferenceQueue$Lock)

at java.lang.ref.ReferenceQueue.remove(Unknown Source)

at java.lang.ref.Finalizer$FinalizerThread.run(Unknown Source)

Locked ownable synchronizers:

- None

"Reference Handler" #2 daemon prio=10 os_prio=2 tid=0x14270c00 nid=0xcc8 in Object.wait() [0x03daf000]

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

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

- waiting on <0x09467a78> (a java.lang.ref.Reference$Lock)

at java.lang.Object.wait(Unknown Source)

at java.lang.ref.Reference$ReferenceHandler.run(Unknown Source)

- locked <0x09467a78> (a java.lang.ref.Reference$Lock)

Locked ownable synchronizers:

- None

"main" #1 prio=5 os_prio=0 tid=0x01b0c000 nid=0x9a8 waiting on condition [0x01b5f000]

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

at java.lang.Thread.sleep(Native Method)

at Test.main(Redefined)

Locked ownable synchronizers:

- None

Java虚拟机在运行时,除了用户线程外,还有许多的守护线程、虚拟机自身线程。

对于每个线程,都有如下信息:

线程名,如“main”

线程属性(如果是Daemon线程,会有Daemon标识,否则,什么都没有)

线程优先级,prio

java线程对应的本地线程的优先级os_pri

java线程标识tid

java线程对应的本地线程标识nid

线程状态(运行中、等待等)

线程的栈信息

线程锁信息

堆转储信息

直接使用sum jdk自带的工具jconsole,jvisual参看堆转储文件能看到的有用信息比较少,最多能看到那种类型的数据占用内存最多。

一般是使用它们生成转储文件,然后导入到其他工具中进行进一步分析,如eclipse memory map Analyzer (mat)进行分析。

安装mat后,使用mat打开生成的堆转储文件,查看相关信息。

(1)个人觉得如果要分析内存问题,还是需要非常了解你所分析的程序,不然,这些数据并没有什么太多用处。

(2)目前对mat还不是非常熟悉,感觉功能很强大,功能非常多,还没有摸索清楚大部分的功能用法,所以,下面就简单说一说大概弄懂了的东西

个人觉得最有用的几个分析功能有:

1.大体查看那些对象占用的内存最多 这个可以通过overview直接可以看到

2.查看某个对象一个简单的状态,如集合的最近刷新的值

3.查看对象到GC root的路径(即如何被引用的,为什么没有被回收)4.性能优化方法内存中是否有大量的重复字符串

集合的填充比例(看是否集合占用的许多未使用的空间)

5.线程栈信息快照,如当前都有那些变量,占用了多少空间

这个先说到这,等GC调优更加熟练了之后在写吧!

java 堆栈信息分析_Java堆栈信息分析相关推荐

  1. java log4j 热部署_JAVA类加载器分析--热部署的缺陷(有代码示例,及分析)

    首先纠正一个误区: 热部署不是我们在Eclipse里面修改了代码不用重启就可以持续调试. 详情可以参考上一篇博文: 热部署和"Hot Code Replace"的区别    htt ...

  2. java面向对象银行案例_Java程序设计-面向对象分析案例:银行储蓄系统.ppt

    面向对象分析 1 基本过程 2 需求陈述 3 建立对象模型 4 建立动态模型 5 建立功能模型 6 定义服务 1 面向对象分析的基本过程 在面向对象建模的过程中,系统分析员必须认真向领域专家学习. 在 ...

  3. java serializable 源码_Java源码分析之-Serializable接口

    一.基本概念 Serializable接口: 1. 实现了Serializable接口的类,可以进行序列化和反序列化:没有实现这个接口的类的任何(state)状态/域或者属性值不能被序列化 2. Al ...

  4. java栈的应用_Java堆栈应用程序

    我有一个Java问题,涉及阅读一个文本文件,并检查它是否正确地平衡了花括号,方括号和括号 - '{','}','[',']','('和') ". 读取文件没有问题,但现在我应该使用名为Del ...

  5. java中的递归算法_java递归算法实例分析

    递归算法设计的基本思想是: 对于一个复杂的问题,把原问题分解为若干个相对简单类同的子问题,继续下去直到子问题简单到能够直接求解,也就是说到了递推的出口,这样原问题就有递推得解. 在做递归算法的时候,一 ...

  6. java实现基金浮动_Java: 实现自回归分析/线性回归分析/基金各项指标计算等

    版权声明:本文为博主原创文章,未经博主允许不得转载. 需Jama矩阵运算库. java版源码: 包含自回归分析/线性回归分析/基金各项指标计算 import Jama.Matrix; public c ...

  7. java 垃圾回收题目_Java垃圾收集题目分析

    [考题题干]关于垃圾收集的哪些叙述是对的? A.垃圾收集将检查并释放不再使用的内存. B.垃圾收集允许程序开发者明确指定并立即释放该内存. C.程序开发者必须自己创建一个线程进行内存释放的工作. D. ...

  8. java 枚举类型初始化_java 枚举类型分析

    最近做android开发,需要用到枚举值,这样可以连续赋值,我按之前c++那样书写,如下所示: public enumColorSelect { RED_BAGE= 0, GREEN_BAGE, BL ...

  9. java集合类程序代码_Java集合类源代码分析二:ArrayList(1)

    从java集合结构能够看出来ArrayList是属于Collection中的List范畴的.从源代码中是这样表示的, public classArrayList extends AbstractLis ...

  10. java学生管理系统代码_java学生信息管理系统(附源码)

    一:   介绍 1:实现登录界面 2:实现主界面 有两种操作 一种是按钮操作  另外一种是SQL语句. 3:连接SQL server 2008 数据库 用到的软件及环境SQLserver2008,ec ...

最新文章

  1. 组策略 从入门到精通(二) 如何区别跨越WAN网的计算机对组策略的套用
  2. php+羊,PHP之羊生小羊的问题
  3. suricata的简介以及安装过程
  4. 线上学python哪家好-广州学Python学校哪家好
  5. 最短路径之迪杰斯特拉(Dijkstra 算法)弗洛伊德算法(C语言完整代码实现)
  6. 安装 Nexus——war版本
  7. 156 - Ananagrams
  8. 深入理解ajax系列第九篇
  9. 全球铁矿石行业供给分析与投资可行性分析报告2022年版
  10. ftp服务器技术原理,FTP工作原理
  11. spss回归分析笔记记录
  12. 圆柱体积怎么算立方公式_圆柱体积计算公式 计算方法及例题
  13. Linux-设置静态IP地址
  14. windows 远程连接mongo_远程连接天下数据ADSL动态拨号VPS教程(windows)
  15. 长江后浪推前浪, “趣出行”死在“火牛”的沙滩上
  16. 博士生为什么纷纷逃离科研?
  17. 我司Spark迁移Hive数据到MongoDB生产案例代码
  18. 考研政治——马克思辩证法中的两大特征和五大范畴
  19. 贝多芬没能写完的《第十交响曲》,即将被人工智能完成
  20. 原画师一般用什么软件画画?原画师需要用到什么工具?

热门文章

  1. ADC 外电阻分压种种
  2. 物流快递管理系统源码
  3. 装载机液压系统原理图分析方法
  4. 基于Zedboard和ov5642实现视频采集及VGA输出
  5. 火山PC锐浪报表使用教程1(Grid++Report)
  6. stm32f103测脉冲数用于带霍尔编码器的电机测速
  7. 火狐浏览器添加restclient.xpi 添加插件时候遇见的 附件未经验证无法安装
  8. ubuntu 20.04 | 美化主题、图标、光标、壁纸、登录背景
  9. 修改 Ubuntu 20.04 的登录界面背景
  10. Unity-TouchScripts中使用TUIO的记录和简单的代码分析