JVM
维亚贝
这个作者很懒,什么都没留下…
展开
-
JVM虚拟机内存划分
JAVA中,内存分配及垃圾回收都是交给JVM虚拟机自行管理,开发人员一般不需要介入,但是一旦发生内存泄漏等问题,如果对JVM一点不了解,排查起来可能会比较费力,甚至一头雾水,了解JVM对项目的健康正常运行有一定的帮助。 根据《Java虚拟机规范》的规定,运行时数据区通常包括这几个部分:程序计数器(Program Counter Register)、Java栈(VM St...原创 2018-08-06 21:37:46 · 188 阅读 · 0 评论 -
JVM垃圾回收
JAVA面试中常常会被问到JVM虚拟机中,垃圾回收的原理及算法,目前常用的回收算法有:复制算法、标记-清除算法、标记整理算法。1、复制算法 复制算法,主要通过将内存中还被使用的对象复制到指定内存,同时清空当前内存区域的算法。经典使用场景为分带算法中的新生代。 新生代内存分配如图,一个eden,两个survivor区,默认8:1:1。新生代中正在使用的...原创 2018-08-07 14:10:09 · 118 阅读 · 0 评论 -
JVM分代算法
目前JVM虚拟机中基本都使用分带收集算法,根据对象存活周期不同,分为三个年代:年青代、老年代、持久代。这是因为不同对象存活时间不一致,有些可能只使用一次,使用后就需要回收,而有些对象却会伴随整个程序的生命周期。分代有利于堆不同生命周期的对象进行管理,减少GC次数,提高运行效率。1、年青代 年青代包含一个eden区,两个survivor区,默认比例为8:1:1。 ...原创 2018-08-07 15:08:01 · 4195 阅读 · 0 评论 -
Minor GC和Full GC触发条件
1、Minor GC 触发位置:年青代的eden区 触发条件:eden区内存满时,触发Minor GC,清理年轻代内存。 触发频率:高 回收效率:一般回收效率在70%-95%,回收效率高。2、full GC 触发位置:老年代 触发条件: ①老年代内存不够,进行full GC回收; ...原创 2018-08-07 15:25:54 · 337 阅读 · 0 评论 -
JVM方法区回收方法
1、方法区 JVM中的方法区,按分代算法属于持久代,所以一般也被称为持久代。2、回收对象 方法区主要保存类信息(构造器)、常量、静态变量等,可回收对象为:废弃常量,无用的类。回收废弃常量与JAVA对象一致,无用即删; 以常量池中字面量的回收为例,例如一个字符串“abc”已经进入常量池,但是无任何String对象引用常量池的此常量,也无其它引...原创 2018-08-07 16:07:02 · 1046 阅读 · 0 评论