JVM
文章平均质量分 67
Tony.Wu
这个作者很懒,什么都没留下…
展开
-
JVM运行时内存分区
JVM所管理的内存分为以下几个运行时数据区:程序计数器、Java虚拟机栈、本地方法栈、Java堆、方法区。1、线程私有区顾名思义,所谓线程私有区,就是每个线程运行时独享的内存区域,每个线程独享的内存区域又可分为三个部分。1.1、程序计数器(Program Counter Register)几乎所有的程序里都需要一个程序计数器,来选取下一条需要执行的指令。这里可把它看做是线程所执行字...原创 2018-11-08 09:18:50 · 341 阅读 · 0 评论 -
Java 垃圾回收算法
1、标记—清除算法(Mark-Sweep)标记—清除算法是最基础的收集算法,它分为“标记”和“清除”两个阶段:首先标记出所需回收的对象,在标记完成后统一回收掉所有被标记的对象,它的标记过程其实就是前面的可达性分析算法中判定垃圾对象的标记过程。标记—清除算法的执行情况如下图所示:回收前状态回收后状态该算法有如下缺点:标记和清除过程的效率都不高标记清除后会产生大量不连续的内存碎片,空...原创 2018-11-08 11:25:12 · 152 阅读 · 0 评论 -
JVM 垃圾收集器
根据不同的应用,所产生的内存对象不同,要满足的业务场景也不一样,因此没有完美的垃圾收集器,需要根据实际情况去选择。垃圾收集器是垃圾收集算法的具体实现。Java的堆内存根据对象的生命周期也会分为新生代和老年代。新生代的对象朝生夕死,回收率高,老年代的对象存活时间长,回收率低。 两者往往会使用不同的垃圾收集器。新生代收集器Serial 收集器:单线程,简单而高效(与其他收集器的单线程比),...原创 2018-11-08 11:46:44 · 189 阅读 · 0 评论 -
Java 堆和栈的区别
物理地址a. 堆的物理地址分配对对象是不连续的。因此性能慢些。在GC的时候也要考虑到不连续的分配,所以有各种垃圾收集算法。比如,标记-消除,复制,标记-整理,分代(即新生代使用复制算法,老年代使用标记——压缩)b. 栈使用的是数据结构中的栈,先进后出的原则,物理地址分配是连续的。所以性能快。内存分配a. 堆因为是不连续的,所以分配的内存是在运行期确认的,因此大小不固定。b. 栈是...原创 2018-11-08 12:15:16 · 141 阅读 · 0 评论