一、并发情况下内存分配
1、CAS配上失败重试保证保证线程安全
2、把内存分配的动作按照线程划分在不同的空间,即为每个线程在Java堆预先分配一小块内存,称为本地线程分配缓冲 (TLAB)。
二、对象头存放的信息
类的元数据指针、对象的哈希码、对象的GC分代年龄、锁状态标志、线程持有的锁、偏向线程ID、偏向时间戳等
三、对象的访问定位
1、句柄访问
2、直接指针
四、JVM命令行工具
1、jps: 显示系统内所有HotSpot虚拟机进程
2、jstat: 用于监视虚拟机各种运行状态信息,它可以显示本地或远程虚拟机进程中的类加载、内存、垃圾收集、JIT编译等运行数据
3、jinfo: 实时查看和调整虚拟机各项参数
4、jmap: 用于生成对转储快照
5、jhat:与jmap联合使用,用于分析对转储快照
6、jstack: 用于生成虚拟机当前时刻的线程快照。线程快照就是当前虚拟机中每一个线程正在执行的方法的堆栈集合,生成线程快照的目的就是定位线程出现长时间停顿的原因。