
虚拟机整理
文章平均质量分 90
LiHuaxin_BJ
这个作者很懒,什么都没留下…
展开
-
JVM(一):Java对象的存储结构
一、Java对象在内存中结构在HotSpot虚拟机中,对象在内存中存储的布局可以分为3块区域:对象头(Header)、实例数(Instance Data)和对齐填充(Padding)。下图是普通对象实例与数组对象实例的数据结构: 1、对象头HotSpot虚拟机的对象头包括两部分信息:(1)markword第一部分markword,用于存储对象自身的运行时数据,如哈希码(HashCode)、GC分...原创 2018-07-03 10:55:22 · 8286 阅读 · 0 评论 -
JVM(二):GC垃圾收集
GC(Garbage Collection)垃圾回收:主要针对堆与方法区。一、常见的内存管理算法(存活判定)1、引用计数算法:给对象中添加一个引用计数器,当有一个地方引用就+1,引用失效,计数器-1,任何时刻计数器为0的对象都不可能在被使用。这在大部分情况下是一个不错的办法,也有一些语言利用此方法来进行内存管理(Python,Squirrel),但在Java中并未选用引用计数器来进行内存管理,最主...原创 2018-07-03 10:58:57 · 6876 阅读 · 0 评论 -
JVM(三): 垃圾收集器
HotSopt JVM收集器 上面有7种收集器,分为两块,上面为新生代收集器,下面是老年代收集器。如果两个收集器之间存在连线,就说明它们可以搭配使用。1、Serial收集器 [ˈsɪəriəl](串行GC,JDK1.3之前的唯一选择):收集器是一个新生代收集器,单线程执行,使用复制算法。它在进行垃圾收集时,必须暂停其他所有的工作线程(用户线程)。是Jvm client模式下默认的新生代收集器...原创 2018-07-03 11:02:11 · 6855 阅读 · 0 评论 -
JVM(四):对象的分配与回收
对象的内存分配,主要就是在堆上分配,也可能间接的栈上分配,对象主要分配在新生代的Eden区上,如果启用了本地线程分配缓存(TLAB),将按线程优先在TLAB上分配,少数情况下也会直接分配在老年代中,分配的规则不固定,其细节主要取决于使用的垃圾收集器组合,及虚拟机中与内存相关的参数设置。对象优先在Eden分配 一般情况下,对象在新生代Eden区,当Eden区没有足够空间进行分配时,虚拟机...原创 2018-07-03 11:04:02 · 7030 阅读 · 1 评论 -
JVM(五):虚拟机类加载机制
一、类加载时机 类从被加载到虚拟机内存中开始,到卸载内存为止,它的整个生命周期包括: 加载(Loading) 验证(Verification)准备(Preparation)解析(Resolution)初始化(Initialization)使用(Using)卸载(Unloading) 这7个阶段的发生顺序如图: ...原创 2018-07-04 15:15:48 · 6970 阅读 · 1 评论