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

类加载

  • 分为几个阶段?哪两个阶段是不一定按顺序的?
  • 这些阶段标识的是开始顺序,进行顺序还是完成顺序?是按顺序线性执行的吗?
  • 什么是静态绑定和动态绑定?
  • 哪些是静态绑定的?

加载

  • 用什么对什么进行加载?
  • 做了哪几件事?
  • 加载完成后运行时数据结构被储存在哪?
  • 生成了什么对象保存在哪?
  • 自定义类加载器用途有哪些?
  • 什么是类加载器的双亲委派模式?有什么好处?

验证

  • 四个阶段是什么?

准备

  • 主要工作?
  • 实例变量内存在什么时候分配?
  • 类变量(static)内存在哪里分配?
  • 此时类变量的值是多少?什么时候会进行用户代码赋值?
  • 数组初始化时没有对元素赋值可以直接使用吗?

解析

  • 主要工作?
  • 对哪里的符号引用进行解析?
  • 主要解析的符号引用有哪几类?
  • 可能对一个符号引用进行多次解析吗?一般怎么处理?
  • 类或接口解析流程?
  • 字段解析流程?
  • 类方法解析流程?
  • 接口方法解析流程?

初始化

  • 主要工作?初始化的是什么变量?
  • <clinit>执行规则?
  • <clinit>与类构造函数<init>的区别?JAVA里第一个被执行<clinit>函数的对象是什么?
  • 接口中会有<clinit>赋值吗?和类有什么区别?
  • 类一定会有<clinit>赋值吗?

多态性

http://www.cnblogs.com/qlky/p/7420795.html

  • 静态解析成立条件?
  • 什么是动态连接?
  • 四种方法调用字节指令?
  • 什么是非虚方法?包括哪些?
  • 静态分派是什么?
  • 静态分派发生在哪个时期?是由虚拟机执行还是编译器?
  • 什么是静态类型和实际类型?
  • 动态分派是什么?
  • 根据变量的什么类型决定分方法的执行版本?
  • 动态分派在什么时期执行?
  • 什么是单分派?什么是多分派?
  • 什么是方法的宗量?
  • Java静态分派的宗量有几个?动态分派的宗量有几个?
  • 方法重载属于静态分派还是动态分派?

GC

什么是四种引用类型?JAVA 四种引用类型

强引用

  • 强引用怎么使用?
  • 程序空间不足时会抛出oom异常还是回收强引用?
  • 怎样才能回收强引用?
  • 强引用保存在哪个区域?引用对象在哪个区域?
  • 为什么全局变量需要赋值为null,局部变量一般不用?
  • ArrayList类型应该怎样释放强引用?

软引用

  • 软引用怎么使用?
  • 软引用在什么情况下不会被回收?什么情况下会?
  • 引用队列如何使用?有什么作用?
  • 应用场景?
  • 浏览器的后退按钮。按后退时,这个后退时显示的网页内容是重新进行请求还是从缓存中取出呢?

弱引用

  • 怎么使用?有什么作用?
  • 弱引用在什么情况下不会被回收?什么情况下会?
  • 与软引用的区别?
  • 应用场景?

虚引用

  • 怎么使用?有什么作用?
  • 弱引用在什么情况下不会被回收?什么情况下会?
  • 怎么判断引用对象是否即将进行GC?

垃圾对象搜索算法

  • 什么是引用计数算法?
  • 为什么JAVA没有使用引用计数算法?
  • 什么是根搜索算法?根是什么?
  • 根搜索算法的两次标记过程是怎样的?
  • 被垃圾回收的对象在什么时候执行finialize()方法?
  • 怎么判断需不需要执行finialize()方法?
  • 被第一次标记的对象将会怎样被回收?
  • 怎么在finialize()方法里避免被回收?

垃圾收集算法

  • 什么是标记清除算法?有什么优缺点?
  • 什么是复制算法?有什么优缺点?适用于老生代还是新生代?
  • 什么是标记整理算法?有什么优缺点?适用于老生代还是新生代?

内存分配策略

  • 对象优先在哪个区分配内存?
  • 什么对象会进入老生代?
  • 老生代进行GC时,对direct memory有影响吗?

Java虚拟机基础知识你知道多少?的更多相关文章

  1. Java虚拟机基础知识

    写在前面 之前老大让做一些外包面试,我的问题很简单: 介绍一下工作中解决过比较有意思的问题. HashMap使用中需要注意的点. 第一个问题主要是想了解一下对方项目经验的含金量,第二个问题则是测试下是 ...

  2. JVM,Java虚拟机基础知识新手入门教程(超级通熟易懂)

    作者:请叫我红领巾,转载请注明出处http://www.cnblogs.com/xxzhuang/p/7453746.html,简书地址:http://www.jianshu.com/p/b963b3 ...

  3. Java 多线程——基础知识

    java 多线程 目录: Java 多线程——基础知识 Java 多线程 —— synchronized关键字 java 多线程——一个定时调度的例子 java 多线程——quartz 定时调度的例子 ...

  4. JAVA相关基础知识

    JAVA相关基础知识 1.面向对象的特征有哪些方面 1.抽象: 抽象就是忽略一个主题中与当前目标无关的那些方面,以便更充分地注意与当前目标有关的方面.抽象并不打算了解全部问题,而只是选择其中的一部分, ...

  5. java必备基础知识(一)

    学习的一点建议: 每一门语言的学习都要从基础知识开始,学习是一个过程,"万丈高楼平地起",没有一个好的地基,想必再豪华的高楼大厦终究有一天会倒塌.因此,我们学习知识也要打牢根基,厚 ...

  6. Java虚拟机基础

    Java虚拟机基础 JVM是Java Virtual Machine的缩写.JVM是一个可以将Java字节码转换成机器语言并能被机器(电脑)执行的Java字节码处理引擎.Java字节码是处于Java和 ...

  7. 什么才是java的基础知识?

    近日里,很多人邀请我回答各种j2ee开发的初级问题,我无一都强调java初学者要先扎实自己的基础知识,那什么才是java的基础知识?又怎么样才算掌握了java的基础知识呢?这个问题还真值得仔细思考. ...

  8. java部分基础知识整理----百度脑图版

    近期发现,通过百度脑图可以很好的归纳总结和整理知识点,本着学习和复习的目的,梳理了一下java部分的知识点,不定期更新,若有不恰之处,请指正,谢谢! 脑图链接如下:java部分基础知识整理----百度 ...

  9. JAVA学习基础知识总结(原创)

    (未经博主允许,禁止转载!) 一.基础知识:1.JVM.JRE和JDK的区别: JVM(Java Virtual Machine):java虚拟机,用于保证java的跨平台的特性. java语言是跨平 ...

随机推荐

  1. linux系统上内网ip和和外网ip的关系

    1.不同服务之间的访问需要使用公网IP+端口才能访问 2.服务器上一般都是域名访问,服务器会把ip+端口映射成固定的域名,所以如果想访问服务器上其他应用,就必须的放开应用限制 问题,在服务器上放开对某 ...

  2. 语法糖----C#的async和await

    C# 5.0中引入了async 和 await.这两个关键字可以让你更方便的写出异步代码. public class MyClass { public MyClass() { DisplayValue ...

  3. 【2018北京集训十二】 coin 矩阵快速幂

    矩阵快速幂原来还可以这么用?? 你们城里人还真会玩. 我们令$f[i][j][k]$表示总的钱数为i,当前使用的最大面值硬币的面值为$v_j$,最小为$v_k$的方案数量. 不难发现$f[i][j][ ...

  4. 【poj1850】 Code 数位dp+记忆化搜索

    题目大意:给你一个字符串,问你这个字符串的rank,如果这个字符串不合法,请直接输出0.(一个合法的字符串是对于∀i,有c[i]<c[i+1]) 字符串s的rank的计算方式:以字符串长度作为第 ...

  5. OS之进程管理---孤儿进程和僵尸进程

    僵尸进程 当一个进程终止时,操作系统会释放其资源,不过它位于进程表中的条目还是在的,直到它的父进程调用wait():这是因为进程表中包含了进程的退出状态.当进程已经终止,但是其父进尚未调用wait() ...

  6. web前端导出csv文件

    前言 导出文件,使用最多的方式还是服务器端来处理.比如jsp 中使用response 的方式. 但是,有时候可能就想使用web 前端是否也可以把页面上的内容导出来呢? 比如说,导出页面的一个表格. 这 ...

  7. Javac语法糖之Enum类

    枚举类在Javac中是被当作类来看待的. An enum type is implicitly final unless it contains at least one enum constant ...

  8. C/C++ -- Gui编程 -- Qt库的使用 -- Qt5总结

    主要变化: 1.与Qt4相比,Qt5可以直接显示中文不需要手工转码2.Qt5模块发生变化,大部分组件并入widgets模块 注意事项:工程文件加一句greaterThan(QT_MAJOR_VERSI ...

  9. react config test env with jest and create-react-app 1

    /.babelrc { "presets": ["@babel/preset-env","@babel/preset-react"], &q ...

  10. flex的使用以及布局

    1.添加flex属性后的区别 <style> body{ font-size:35px; } .flex-box{ display:flex; display: -webkit-flex; ...