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

1, Java 文件是怎么运行的

进阶学习(4.1) JVM结构和原理_第1张图片

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

2, JVM 数据模型

进阶学习(4.1) JVM结构和原理_第2张图片

  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 寄存器, 存储一下条指令的位置, 可以理解未一下行代码的行数

你可能感兴趣的:(学习资料,JAVA,JVM,jvm)