1、虚拟机对象布局
布局:对象头、实例数据、对齐填充
对象头: Mark Word 8字节,hashcode值、GC分代信息、偏向锁信息;
Class Point 8字节,类指针 ,指向引用对象。
实例数据:成员属性
对象填充:对象字节/8倍数,如果不足的情况下,实现填充。如果实例数据类型为int,可能会有填充数据;如果类型为Integer,没有填充数据,因为Integer会自动填充(由4个字节填充到8个字节)
2、new一个java对象要多少字节?
对象头+实例数据+填充数据
在32位操作系统下,对象头占 8个字节;在64位操作系统下,对象头占16个字节,如果虚拟机压缩对象头,对象头只有12个字节。
如果实例数据类型为int,可能会有填充数据;如果类型为Integer,没有填充数据,因为Integer会自动填充(由4个字节填充到8个字节)
3、如何诊断线程死锁问题
JVM常用虚拟机命令
jps 查看当前服务器上有哪些java进程
jmap -heap 进程id 查看你的堆内存占用情况
软件方式监控:
Jconsole工具 https://www.cnblogs.com/pinp/p/16824269.html