- 1.JVM的主要组成部分及作用
- 2.JVM运行时数据区
- 3.对象是如何创建的
- 4.创建对象时内存是如何分配的
- 5.创建对象时如何处理并发安全问题
- 6.Java对象的内存布局
- 7.对象的访问方式有哪些
- 8.Java内存泄漏和内存溢出是什么,如何避免
- 9.什么情况会发生栈内存溢出
- 10.Java中垃圾回收是什么,为什么需要垃圾回收?
- 11.Minor GC和Full GC有什么不同?什么情况下会触发Full GC和Minor FC?
- 12.为什么要减少Full GC的发生?
- 13.JVM的内存分配与回收
- 14.Java中都有哪些引用类型
- 15.如何判断对象是否可以回收
- 16.JVM中的永久代中会发生垃圾回收吗?元空间会发生垃圾回收吗?
- 17.有什么办法主动通知虚拟机进行垃圾回收?
- 18.垃圾回收算法
- 19.垃圾收集器
- 20.什么是类加载
- 21.简述类加载过程
- 22.类加载器有哪些
- 23.什么是双亲委派机制
- 24.有哪些打破双亲委派机制的例子
- 25.虚拟机性能监控的一些命令
- 26.JVM如何调优
26.JVM如何调优
在HotSpot虚拟机中,对象在内存中存储的布局可以分为3块区域:对象头、实例数据和对齐填充
对象头
对象头包含两部分信息,一部分用于存储自身的运行时数据,如哈希码、GC分代年龄、锁状态标志、线程持有的锁、偏向线程ID、偏向时间戳等。另一部分是类型指针,即对象指向它的类元数据的指针,虚拟机通过这个指针来确定这个对象是哪个类的实例。
实例数据
实例数据部分是对象真正存储的有效信息,也是代码中所定义的各种类型的字段内容
对齐填充
HotSpot虚拟机的自动内存管理系统要求对象起止地址必须是8字节的整数倍,也就是说对象的大小必须是8字节的整数倍,对象头部分正好是8字节的整数倍,所以,当对象实例数据部分没有对齐时,就需要通过对齐填充来补全,对齐填充并不是必然存在的,也没有特殊的含义,只是起到了占位符的作用。
本站链接:https://www.mianshi.online,如需勘误或投稿,请联系微信:lurenzhang888
点击面试手册,获取本站面试手册PDF完整版