理解JVM内存分配策略 三大原则+担保机制 JVM分配内存机制有三大原则和担保机制 具体如下所示: 优先分配到eden区 大对象,直接进入到老年代 长期存活的对象分配到老年代 空间分配担保 对象优先在Eden上分配 如何验证对象优先在Eden上分配呢,我们进行如下实验。 打印内存分配信息 首先代码如 ...
分类:
其他好文 时间:
2019-09-22 02:04:33
阅读次数:
92
堆相关的配置参数 -Xmx 最大堆空间 -Xms 初始堆空间大小,如果初始堆空间耗尽,JVM会对堆空间扩容,其扩展上限为最大堆空间。通常-Xms与-Xmx设置为同样大小,避免扩容造成性能损耗。 -Xmn 设置新生代大小,设置一个较大的新生代会减少老年代的大小,新生代的大小一般设置为整个堆空间的1/3 ...
分类:
其他好文 时间:
2019-09-18 20:56:01
阅读次数:
123
参考资料:GC算法分类-https://zhuanlan.zhihu.com/p/41666328 《深入理解java虚拟机》第三章垃圾收集器与内存分配策略 一:GC分代--新生代跟老年代 gc活动空间为堆区域,堆按gc处理方式也可以分为新生代跟老年代。 对象内存分配跟使用的垃圾收集器有关,默认是在 ...
分类:
编程语言 时间:
2019-09-15 17:08:04
阅读次数:
110
之前看过《深入了解Java虚拟机》感觉容易忘,今天写一篇博客加深一下印象。 JVM的内存分配和垃圾回收(GC)主要发生在Java堆中。而Java堆根据对象的存活时间可以分为新生代和老年代,而新生代又细分为Eden区、From Survivor区、To Survivor区,这是由于新生代中的垃圾回收算 ...
分类:
其他好文 时间:
2019-09-09 22:20:02
阅读次数:
109
上面7种作用于不同分代的收集器,如果两个收集器之间存在连线,就说明它们可以搭配使用。虚拟机所处的区域,则标识它是属于新生代收集器还是老年代收集器。 Serial收集器: Serial收集器是最基本、发展历史最悠久的收集器,曾经(JDK1.3.1前)是虚拟机新生代收集器的唯一选择。它是一个单线程的收集 ...
分类:
其他好文 时间:
2019-09-06 01:05:59
阅读次数:
94
开头的数字代表了GC发生的时间,也就是从java虚拟机启动以来经过的秒数 GC日志开头的[GC和[FULL GC说明了这次垃圾收集的停顿类型,而不是用来区分新生代GC还是老年代GC的。如果有FULL,说明这次GC是发生了Stop-The-World的。如果是调用了System.gc()触发的收集,则 ...
分类:
其他好文 时间:
2019-09-06 00:59:51
阅读次数:
96
GC回收算法 什么是垃圾? 类比日常生活中,如果一个东西经常没被使用,那么就可以说是垃圾。 同理,如果一个对象不可能再被引用,那么这个对象就是垃圾,应该被回收。 垃圾:不可能再被引用的对象。 finalize方法 在对象没有被引用时调用 在Object类里定义 新生代与老年代 IBM公司的研究表明, ...
分类:
编程语言 时间:
2019-09-01 16:35:45
阅读次数:
72
《深入理解 Java 虚拟机》学习 垃圾回收算法 1. 说明 程序计数器,虚拟机栈,本地方法栈三个区域随线程而生,随线程而灭,这几个区域的内存分配和回收都具备确定性 Java 堆和方法区这部分内存的分配和回收都是动态的,垃圾收集器所关注的是这部分内存 新生代和老年代 Java 中的堆是 JVM 所管 ...
分类:
编程语言 时间:
2019-08-23 13:20:24
阅读次数:
83
前言:新生代的收集器有:Serial,ParNew,Parallel Scavenge等。老年代有:CMS,SerialOld,Paraller Old等。接下来将深入理解各个垃圾收集器的原理,以及它们如何在不同场景下进行搭配使用。 同时,先解释几个名次: (一) 新生代的收集器们 (1) ParN ...
分类:
其他好文 时间:
2019-08-19 18:54:40
阅读次数:
85
JVM参数: 1)-Xmn: 新生代内存上限值 2)-Xms: 整个堆区初始内存分配的大小 3)-Xmx: 堆区内存的最大分配大小 4)-XX:SurvivorRatio: 决定eden与一个survivor大小之比 5)-XX:PretenureSizeThreshold: 大对象直接放入老年代, ...
分类:
其他好文 时间:
2019-08-16 17:13:15
阅读次数:
84