Java虚拟机基础知识你知道多少?

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默认使用哪个?

猜你喜欢

转载自www.cnblogs.com/qlky/p/10663969.html
今日推荐