• 博客园logo
  • 会员
  • 周边
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
duolaimi
博客园    首页    新随笔    联系   管理    订阅  订阅

Java面试笔记1(JVM)

1.虚拟机内部组成及基本运行流程:

上图详解:1.通过类装载子系统加载类文件到运行时数据区(内存模型中)2.通过字节码执行引擎运行运行时数据区的代码。

2.JVM部分指令:

3.栈中内容详解:

每个栈帧中都有局部变量表,操作数栈,动态链接,方法出口。
局部变量表:存放局部变量
操作数栈:存放操作数,如10,20等,先进栈保存操作数,出栈后将操作数赋值给局部变量表中的局部变量(数值型数据操作的临时空间)
动态链接:方法的字节码文件存在于方法区中,当方法1调用方法2时,方法1会在方法区中找方法2的入口地址。其中方法2的名称是符号引用,方法区(方法2)中的代码是直接引用(符号引用转直接引用)
方法出口:当方法1调用方法2的时候,方法2中的方法出口就已经记录了方法结束时需要跳转的代码位置,如果有返回值也会将返回值返回

栈中有new的对象的情况:会在堆中new对象,栈中的局部变量表中保存的是堆中的地址

4.方法区(jdk1.8之后也叫元空间)
方法区中存放的是常量,静态变量和类信息
注意:如果静态变量中存放的是new的对象,也是保存的是堆中的地址

5.本地方法栈:
源码中带native修饰的方法,基本是有c++或c运行时存放的栈。

6.垃圾回收详解:


其中,minor gc中的Eden区为垃圾放置区,通过可达性分析算法得出,如果仍有对象引用,则放入到Survivor区,不会被垃圾回收

posted @ 2022-02-07 22:59  duolaimi  阅读(54)  评论(0)    收藏  举报
刷新页面返回顶部
博客园  ©  2004-2026
浙公网安备 33010602011771号 浙ICP备2021040463号-3