JVM高频面试题

1. 内存模型

线程独享: 虚拟机栈, 本地方法栈, 程序计数器

线程共享: 堆, 方法区

2. 虚拟机栈的作用

存放栈帧, 栈帧又包含局部变量表, 每个方法从被调用到执行结束的过程都对应着一个栈帧在虚拟机栈中从入栈到出栈的过程

3. 程序计数器

存放下一条指令的信息

4. 堆

Java堆是被所有线程共享的区域, 存放几乎所有的对象实例, 是垃圾回收器管理的区域

5. 方法区

存放已加载的类信息, 常量, 静态变量, 编译后的代码缓存

6. 对象的内存布局

  • 对象头:

    • 存储对象自身的运行时数据, 如锁状态, GC年龄分代, 线程持有的锁
    • 类型指针, 指向它的类型元数据,
    • 如果对象是个数组, 那么还有一块用于记录数组长度的数据,
  • 实例数据:程序代码里定义的各种类型的字段.这部分的顺序会收到虚拟机分配策略参数的影响.

  • 对齐填充: 不是必要的, 但是必须保证任何对象的大小都是8字节的整数倍

7. 对象时如何访问定位的

  • 句柄访问
  • 直接指针访问

8. 对象已死

  • 引用计数法

  • 可达性分析

9. 引用

  • 强引用: 最传统的引用, 无论在任何情况下, 只有有强引用, 就不会被回收
  • 软引用: 用来描述还有用, 但是非必要的对象, 在系统将
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值