进阶学习(4.1) JVM结构和原理

25 篇文章 0 订阅
5 篇文章 0 订阅

1, Java 文件是怎么运行的

  1. 编译java 成 class文件
  2. 执行带有主方法的class文件
  3. 找到jvm.cfg, jvm配置文件, 里面配置了JVM.DLL的C++, JVM实现
  4. 类加载器开始加载类进入JVM
  5. 找到主类然后运行

2, JVM 数据模型

  1. 栈: 栈是每个线程私有的, 由很多个栈帧组成 , 可以看到栈1,栈2, 栈3, 栈是有深度和空间大小的, 死循环就会导致栈的深度错误StackOverflowError  栈深错误 和 OutofMemoryError 栈溢出错误, 每调用一个函数都会产生一个栈帧, 栈帧存储, 函数的输入参数, 局部变量, 返回参数
  2. 堆: 
  • 新生代(PSYoungGen), 又分为eden 伊甸园, form 和 to  幸存区(Survivor), f 和 t 之间会来回切换, 空的就是to, 专门设计给复制清除GC 算法的,判断变量是否由引入, 有就复制到to, 没有就留下, 然后删除form 的空间, to 编程form, form 变成 to, 以形换位大法
  • 老年代(ParOldGen), 当一个对象在form 和 to 之间转了很多次的时候, 这个对象将被移送到老年代, 老年代的GC扫描会相比新生代会减少频率,  在JVM中, 最多15次新生代GC后还活着的, 它必然将转移到老年区

  • 元数据, 存放类信息, 方法, 代码, 常量, 静态变量, 这块内存使用的是本地内存, 和主机内存相关

    3. 本地方法栈, 调用本地方法接口时的执行栈帧和Java 栈是相似的

    4. PC 寄存器, 存储一下条指令的位置, 可以理解未一下行代码的行数

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值