当前位置:网站首页>JVM探究
JVM探究
2022-08-10 08:48:00 【starcpdk】
什么是JVM
JVM是Java Virtual Machine(Java虚拟机)的缩写,JVM是一种用于计算设备的规范,它是一个虚构出来的计算机,是通过在实际的计算机上仿真模拟各种计算机功能来实现的。Java虚拟机包括一套字节码指令集、一组寄存器、一个栈、一个垃圾回收堆和一个存储方法域。 JVM屏蔽了与具体操作系统平台相关的信息,使Java程序只需生成在Java虚拟机上运行的目标代码(字节码),就可以在多种平台上不加修改地运行。JVM在执行字节码时,实际上最终还是把字节码解释成具体平台上的机器指令执行。
JVM的位置
JVM的体系结构

类加载器
作用:加载Class文件
- 虚拟机自带的加载器
- 启动类(根)加载器
- 扩展类加载器
- 应用程序加载器
双亲委派机制:安全
- 类加载器收到类加载的请求
- 将这个请求向上委托给父类加载器去完成 , 向上一直委托 , 知道启动类(根)加载器
- 启动类加载器检查是否能够加载当前这个类 , 能加载就结束,使用当前的加载器。否则抛出异常,通知子类加载器进行加载
- 重复步骤3
- Class Not Found

沙箱安全机制
native
凡是带了native关键字的 , 说明java的作用范围打不到了 , 回去调用底层C语言的库 , 会进入本地方法栈 , 然后调用本地方法接口(JNI)
JNI的作用:扩展java 的使用 , 融合不同的编程语言为java所用
方法区
方法区是被所有线程共享 , 所有字段和方法字节码,以及一些特殊的方法 , 如构造函数,接口代码也在此定义 , 简单说 , 所有定义的方法的信息都保存在该区域 。 此区域属于共享区间;
静态变量、常量、类信息(构造方法、接口定义)、运行时的常量池 存在方法区中 , 但是实例变量存在堆内存中 , 和方法区无关

栈
栈
- 先进后出
- 后进先出
队列:
- 先进先出(FIFO)
- 后进后出
线程结束 , 栈内存也就释放了 , 对于栈不存在垃圾回收问题 , 一旦线程结束 , 栈就结束了
栈: 8大基本类型 + 对象引用 + 实例的方法
三种JVM
Sun公司 Java HotSpot
BEA JRockit
IBM J9VM
堆
- Heap:一个JVM只有一个堆内存 , 堆内存的大小是可以调节的。
- 类加载器读取了类文件后 , 一般会把什么东西放到堆中? 类、方法、常量、变量、保存我们所有引用类型的真实对象
- 堆内存中的三个区域:
- 新生区
- 养老区
- 永久区

GC垃圾回收 , 主要是在伊甸园区和养老区~
假设内存满了 , OOM , 也就是堆内存不够!.
JDK8以后将永久存储区名字改为了元空间
新生区
- 类:诞生 和 成长的地方 , 甚至死亡
- 伊甸园 , 所有的对象都是在伊甸园区new 出来的
- 幸存者区(0 , 1)
永久区
这个区域是一个常住内存的.用来存放一些JDK自身携带的Class对象。接口数据 , 元数据 , 存储的是java运行时的一些环境或类信息~ , 这个区域不存在垃圾回收 , 关闭虚拟机就会释放这个区域的内存
- jdk1.6之前: 永久代 , 常量池在方法区
- jdk1.7: 永久代 , 但是慢慢的退化了 , 去永久代 , 常量池在堆中
- jdk1.8之后: 无永久代 , 常量池在元空间

边栏推荐
猜你喜欢

Binary tree --- heap

iwemeta元宇宙:一个娃娃卖9999元,泡泡玛特认为一点也不贵

iwemeta metaverse: Ali's first COO: how to build a sales force

【FAQ】【Push Kit】推送服务,回执配置一直报错、回执过期修改、怎么删除配置的回执

NaiveUI中看起来没啥用的组件(文字渐变)实现原来这么简单

【Unity入门计划】2D游戏实现敌人来回移动控制脚本

CV+Deep Learning - network architecture Pytorch recurrence series - classification (3: MobileNet, ShuffleNet)

UGUI—事件,iTween插件

第十六天&charles的基本操作

本地生活商家如何通过短视频赛道,提升销量曝光量?
随机推荐
浅谈DAO+DeFi+NFT模式开发代码技术方案丨链游元宇宙NFT盲盒项目技术开发逻辑(源码程序)
打工人的第27天-平凡但不平淡的日子
NPU architecture and force analysis
【业务架构】价值链分析:提高客户价值和盈利能力
深度剖析“八大排序”(上)_ 探寻一些不为人知的细节
Vivado时序约束中Tcl命令的对象及属性
1499. The maximum pile.then/deque
【微信小程序】一文读懂页面导航
phpstudy开机自启
Hugo NexT主题升级记录
对称加密与非对称加密的区别
【 WeChat applet 】 read page navigation
qrcode-----生成二维码
FPGA中BEL Site Tile FSR SLR分别指什么?
DAY25: Logic Vulnerability
浅析JWT安全问题
In the SQL SERVER database, if the data of the table is added, deleted, or modified, will the index of the table be recorded in the ldf log?
Compilation failure:找不到符号
StringUtils的具体操作
ARM Architecture 2: Processor Core and Assembly Instruction Set
