JVM ——java虚拟机
java虚拟机所管理的内存有:java运行时数据区、类子加载系统、和执行引擎。
java运行时数据区有:
1.线程共享数据:堆、方法区
2. 线程私有数据:栈、本地方发栈、程序计数器
java虚拟机作用简单来说就是:将字节码编译成机器码,供计算机识别,从而在JRE运行时环境跨平台。
主要执行流程:我们通过编译工具写的.java文件(源代码)通过javac 编译 成.class文件(字节码)通过类子加载系统将二进制.class文件导入内存中,执行引擎去执行cpu,分配时间调度。最终将字节码翻译成机器码 ,在各种平台能运行,实现跨平台。如下图:
GC——垃圾回收机制
GC 垃圾回收机制在堆进行(JVM性能优化,对堆进行优化),因为创建出来的对象都在堆内存中,性能优化:有限的空间做无限的事。
堆:分为 新生代、老年代 。永久代在java8中被剔除,用一个元空间替代,元空间并不在虚拟机中,在本地内存中,元空间大小受本地内存控制。
新生代和老年代分别占比:1/3 ,2/3
新生代又分为 :Eden(8) From(1) To(1) . 比例为:8:1:1
比例为什么是8.1.1 ?
年轻代的回收算法使用的是复制算法,年轻代中内存在80%以上就会进行对象复制,(jvm默认将年轻代划分成了三部分,1个Eden区,两个Survivor【from,to】). GC是统计学测算出当内存使用超过98%以上时,内存就会被morio gc复制一次,紧紧预留2%的内存空间进行GC回收,就晚了,预算,留10%的空间称为s区,两个s区(s0,s1),各占10%。
GC回收
对象在新生代eden中创建,eden满时,morio gc 使用gc root 判定对象是否调用,若没有,游离态,可以回收,若有使用,存活,复制到from 年龄+1,from满,gc root ,存活复制到to,多次GC,年龄>=15,复制到老年代,gc判断老年代空间大于剩余空间大小,STW(停顿)full gc ,清空老年代,其中创建对象内存占比50%也进入老年代
最后
以上就是玩命汽车最近收集整理的关于JVM——java虚拟机,GC——垃圾回收机制的全部内容,更多相关JVM——java虚拟机内容请搜索靠谱客的其他文章。
发表评论 取消回复