http://www.cnblogs.com/qlky/p/7401841.html
java虚拟机结构
http://liuwangshu.cn/java/jvm/1-runtime-data-area.html
class类文件
http://www.cnblogs.com/qlky/p/7401849.html
- 魔数是什么?有什么作用?
- accessflag存放什么?
- this_class, super_class, interface存放什么?
- fields存放什么?包括在方法内存放的变量吗?方法内的变量存在哪?
- methods存放什么?包括父类方法吗?
- 什么是特征签名?为什么返回值不能重载已有方法?
- attributes存放什么?
- code属性存放什么?接口或抽象类有code属性吗?
- exception属性存放什么?
- constantValue属性存放什么?与static,final的关系是什么?
- 类变量(static变量)有哪几种赋值方式?
- 非static变量的赋值在哪里进行?
- final, static, static final的区别?
- static变量有默认值吗?final变量呢?
类加载器
- 系统类加载器有几种类型?分别有什么作用?
- 自定义类加载器需要继承什么实现?
内存模型
https://blog.csdn.net/ns_code/article/details/17565503
线程共享区域有哪些?私有区域有哪些?
为什么更重视共享区域的GC问题?
PC计数器的作用?
虚拟机栈
- 栈帧是什么?由什么组成?与什么相关?作用?
- 栈帧需要多少内存在什么时候确定?编译or运行
- 两种异常情况?
- 局部变量表存放什么?
- 操作数栈存放什么?
- 基于栈的指令集(Java) vs 基于寄存器的指令集(Android) 各自特点?
- 动态连接区存放什么?
- 方法返回地址区作用?
本地方法栈
- 和虚拟机栈的区别?
Java堆
- 主要作用?
- 包括哪几个部分?
- 内存分布是物理连续还是逻辑连续?
- 什么是新生代和老生代?
- 新生代分为哪几个区域?怎么做GC?
- 老生代分为哪几个区域?怎么做GC?
- 对象存放在新生代还是老生代的逻辑?
方法区
- 方法区主要存放什么?
- 内存分布是物理连续还是逻辑连续?
- 运行时常量池存放什么?哪两类常量?
- 符号引用包括哪几类常量?
- 符号引用 vs 直接引用
- 符号引用在哪个阶段被转换为直接引用?
以下操作分别测试哪个区域的内存溢出
- 循环new新的对象并保存于list
- 生成大量动态类并保存于list
- 循环调用String.intern()生成大量string实例并保存于list
- 递归调用一个简单的方法
- 循环创建线程并在内部不断申请内存
对于Object object = new Object(),以下分别储存于哪个区域
- Object引用
- Object实例
- object内部的方法,接口,父类,对象类型
引用类型应该怎么定位到对象实例?
- 句柄访问是什么?
- 直接指针访问是什么?
- 优缺点?java的hotspot默认使用哪个?