jvm基础
2022-06-28 16:54:54 0 举报
jvm、垃圾回收
作者其他创作
大纲/内容
本地方法栈native标明的方法
执行方法后返回
java栈
方法区(元空间)常量池、类元信息静态变量等
Paraller old
操作数栈
新生代主要回收算法:标记-复制,主要采用一个Eden区和一个serveror区,另一个serveror区用来保存剩下的存活对象,每经历一次垃圾回收都会使对象头中的年龄增加1,默认15会放入到老年代。老年代的回收算法主要是:cms:标记-清除,serial old/Paraller old:标记-整理算法,虽然cms标记清除时会产生内存碎片,但是可以进行参数配置进行回收时是否进行对内存整理。G1:虽然改垃圾收集器并没有跟之前的垃圾收集器一样分代。因为使用了region区域进行存储数据,每个region区域都会是新生代或者是老年代,基于算法是,局部区域(单个region)是采用标记-复制算法,整体是标记-清除算法
CMS
动态链接
parNew
程序计数器
方法区不同版本有不同实现的实现方式,jdk8之前是永久代,在jdk8时废弃后使用元空间代替,永久代顾名思义基本使用不到gc回收,所以叫永久,但是并不是不被回收,只是满足回收的条件很苛刻,导致认为不被回收而已。需要注意的是方法区使用的是服务器系统的内存而不是堆内存。可以通过参数指定元空间大小程序计数器是唯一不会出现内存溢出的区域,java栈、native栈、程序计数器每个线程都会标配一份。java栈内存分配越大栈深度就会变浅,可以使用-Xss指定栈内存
方法内调用的native本地方法
新生代
serial old
方法内的变量名称及值
堆
字节码执行引擎不只执行java语言,主要编译后为class文件都可以在jvm上执行
G1
serial
局部变量表
进行操作的栈
用来指示即将执行的代码行号
方法出口
Parallerscanvenge
线程A
老年代
类加载器
每个方法调用都谁创建一个java栈,创建的对象基本不会出现在栈中,栈中会保存指向堆内存的引用地址信息,也有逃逸对象直接保存在栈中,这里只说大部分时候。
字节码执行引擎
0 条评论
下一页