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

进阶学习(4.1) JVM结构和原理相关推荐

  1. 进阶学习(4.3) JVM 垃圾回收算法

    1, 引用计数法 Object  a = new Object(),  引用计数为0 Object  b =  a;   计数 +1 a = null  计数为0,  对象将被回收 b 也是垃圾对象 ...

  2. 进阶学习(4.4) JVM GC Root 判定, 垃圾的判定

    要学JVM 垃圾回收机制, 必须先知道什么是GCRoots,根节点, 常见有 类静态字段 常量 静态代码块 第一栈变量, 网上没有案例说明, 都是复制粘贴的也没说清楚什么是Root 虚拟机栈 1, 先 ...

  3. 进阶学习(4.2) JVM 常用配置参数, GC 参数

    -XX:+PrintGC 打印GC执行信息 -XX:+PrintGCDetails 打印堆使用信息 PSYoungGen 新生代 eden 伊甸区 from 幸存区 to 幸存区 ParOldGen ...

  4. 实现原理讲解!2020Android目前最稳定和高效的UI适配方案!进阶学习资料!

    前言 组件化是 保持整个 App 可持续地进行高质量开发的基础,近年来也是业界一直在积极探索和实践的方向,在深入理解组件化架构的过程中,将不断考验你的技术深度与广度: 实践中我还参考了十几家技术团队的 ...

  5. 关于JVM结构的学习

    JVM内部结构图 Java虚拟机主要分为五个区域:方法区.堆.Java栈.PC寄存器.本地方法栈.下面 来看一些关于JVM结构的重要问题. 1.哪些区域是共享的?哪些是私有的? Java栈.本地方法栈 ...

  6. 一起进阶学习JAVA:MySQL海量数据存储与优化

    一起进阶学习JAVA:MySQL海量数据存储与优化 第一部分 分库分表实战及中间件 1.1 背景介绍 1.1.1 背景描述 刚开始我们的系统只用了 单机数据库 随着用户的不断增多,考虑到系统的高可用和 ...

  7. Redis进阶学习08--多级缓存

    Redis进阶学习08--多级缓存 什么是多级缓存 JVM进程缓存 环境准备 docker安装mysql docker安装nginx 反向代理 初识Caffeine 实现JVM进程缓存 需求 实现 L ...

  8. JVM结构、GC工作机制详解

    题外话:最近在应聘阿里2015暑期实习,感触颇多.机会总是留给有准备的人的,所以平常一定要注意知识的巩固和积累.知识的深度也要有一定的理解,不比别人知道的多,公司干嘛选你?关于JVM和GC,我相信学j ...

  9. JVM结构、内存分配、垃圾回收算法、垃圾收集器。

    2019独角兽企业重金招聘Python工程师标准>>> 一.JVM结构 根据<java虚拟机规范>规定,JVM的基本结构一般如下图所示: 从左图可知,JVM主要包括四个部 ...

最新文章

  1. 编写 Debugging Tools for Windows 扩展,第 2 部分:输出 (windbg 插件 扩展)
  2. 【问链-Eos公开课】第四课 EOS 的钱包创建、导入私钥
  3. python写错了怎么撤回_python新手常见错误汇总
  4. 【算法】剑指 Offer 45. 把数组排成最小的数 【重刷】
  5. 【JS第1期】深拷贝实现原理
  6. 如何在 Spring 中自定义 scope
  7. Python核心编程2第三章课后练习
  8. charshow需求说明
  9. R plot图片背景设置为透明_R语言(绘图入门)
  10. 计算机右键管理 该文件夹,文件右键菜单管理方法介绍【图文详解】
  11. 开源项目推荐:Qt有关的GitHub/Gitee开源项目(★精品收藏★)
  12. 《程序员的成长课》:增加收入的 3 大方向
  13. 蚂蚁金服杨军:蚂蚁数据分析平台的演进及数据分析方法的应用
  14. winscp 进入mysql命令_WinSCP命令行操作
  15. stm32学习笔记——通用计时器基本原理
  16. 什么是共模干扰差模干扰共模信号差模信号
  17. 生命的意義在你的内心
  18. 自学c语言需要懂英语吗,本人没有英语基础和数学基础,能学好C语言吗?
  19. 《asp.net夜话》一书视频ASP.NET夜话视频1-19章下载(ASP.NET夜话2009年5月15日更新)
  20. 画各种思维导图的软件

热门文章

  1. 深度对抗学习在图像分割和超分辨率中的应用
  2. JFileChooser多选、选择目录
  3. JTable动态显示隐藏列
  4. H3C无线 AC网关式部署无线开局(WEB版)
  5. 华为交换机STP端口角色状态
  6. Tracetcp/Tcptrace的使用
  7. php 安装curl init,linux下为php添加curl扩展的方法及curl_init函数用法案例详解
  8. java 登录下线_java 实现 一个账号只能在一个地方登陆,其他地方被下线
  9. nginx指定配置文件启动
  10. Spring框架入门