1. JVM线程模型
JVM内部线程主要分为以下几种:
- VM线程:单例的VMThread对象,负责执行VM操作
- 定时任务线程:单例的WatcherThread对象,模拟在VM中执行定时操作的计时器中断
- GC线程:垃圾收集器中,用于支持并行和并发垃圾回收的线程
- 编译器线程:将字节码编译为本地机器代码
- 信号分发线程: 等待进程指示的信号,并将其分配给Java级别的信号处理方法
安全点(safe point)
- 方法代码中被植入的安全点检测入口
- 线程处于安全点状态:线程暂停执行,这时候线程栈不再发生改变
- JVM的安全点状态:所有线程都处于安全点状态
JVM支持多种方式进行线程转储:
- JDK工具:jstatck工具,jcmd工具,jconsole工具,jvisualvm,Java Mission Control等;
- shell 命令或者系统控制台,比如Linux 的 kill -3, windows的Ctrl+Break等;
- JMX技术, 主要是使用threadMx
2.内存分析与相关工具
一个对象占用的内存,可以使用Instrumentation.getObjectSize()来估算
JOL(Java Object Layout一个三方工具)可以用来查看对象的内存布局
<未完>