![](https://img-blog.csdnimg.cn/20201014180756913.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
jvm
进击的豆子
这个作者很懒,什么都没留下…
展开
-
JVM GC算法和垃圾收集器
1.判断对象是否是被引用的两种方法 引用计数法,不能回收循环引用的对象,JDK1.3之后已经不用。 根搜索算法,也就是GC root 算法,栈中的局部变量,还有(元区间)方法区,本地方法栈引用的对象。 为什么jvm不直接采用gcroot去回收整个堆 效率不高,我们程序开发 我们的对象99.99% 对象 基本存活不到3秒钟 2.复制算法 主要是用在新生代,新生代和老年代默认比例为1:2,然后新生代里面又分为eden区和S0区,S1区也叫from和to区,这3个默认比例是8:1:1,当Eden区快满的原创 2020-08-07 11:38:57 · 302 阅读 · 0 评论 -
jvm内存模型和jvm相关
1.JVM的内存机构是怎样的 答:有5个部分,其中分线程共享的和线程独占的,线程共享的有堆和元区间,元区间是从jdk1.8开始从之前的在堆里面的方法区分出来了,线程独占的有分为栈,本地方法栈,和pc寄存器。 堆是用来存放new 出来的对象 元区间存放,class对象,静态属性,常量池, 本地方法栈,native修饰的方法 pc寄存器,程序执行的位置 栈,局部变量 2,栈帧的内部组成 栈里面由一个个栈帧组成,一个方法就是一个栈帧,栈帧里面又由局部变量表,操作数栈,(临时存放数据或者计算过一下就原创 2020-08-06 21:16:45 · 96 阅读 · 0 评论 -
关于类的加载过程,和jvm调优
一个class类的大小可以用jol-core jar包来查看它的大小,一个类的大小基本上由请求头,实例对象,对其填充组成的,对其填充里面又有mark word,类型指针,数组长度组成,mark word 8B,里面存放多线程的锁对象,类型指针,指向线性地址,开启指针压缩是4b,未开启指针压缩是8B,实例对象,就是他的成员对象,pravite 里面装对象, 然后就是对齐填充,都是以8B对齐的。注意未开启指针压缩,会在数组长度之后开一个对齐填充。 类的加载过程就是将class文件加载进虚拟机的过程,会有一原创 2020-05-18 21:02:41 · 109 阅读 · 0 评论