JVM的结构图 Java内存结构 JVM内存结构主要有三大块:堆内存、方法区和栈。 堆内存是JVM中最大的一块由年轻代和老年代组成,而年轻代内存又被分成三部分,Eden空间、From Survivor空间、To Survivor空间,默认情况下年轻代按照8:1:1的比例来分配; 方法区存储类信息、常 ...
分类:
其他好文 时间:
2020-01-26 19:10:01
阅读次数:
68
以前收集器的特点 1. 年轻代和老年代是各自独立且连续的内存块 2. 年轻代收集必须使用单个eden+S0+S1进行复制算法 3. 老年代收集扫描整个老年代区域 4. 都是以尽可能少而快速地执行GC为设计原则 G1是什么 G1(Garbage Frist)收集器,是一款面向服务端应用的收集器 从官网 ...
分类:
编程语言 时间:
2020-01-25 23:24:12
阅读次数:
94
堆结构分代图 堆结构分代的意义 Java虚拟机根据对象存活的周期不同,把堆内存划分为几块,一般分为新生代、老年代和永久代(对HotSpot虚拟机而言),这就是JVM的内存分代策略。 堆内存是虚拟机管理的内存中最大的一块,也是垃圾回收最频繁的一块区域,我们程序所有的对象实例都存放在堆内存中。给堆内存分 ...
分类:
其他好文 时间:
2020-01-20 14:48:57
阅读次数:
78
在了解这一块知识的时候,需要知道jdk1.8之前与jdk1.8及之其之后的区别 新生代: 刚创建的对象, 有可能经历过几次GC 老年代: 经历过多次GC之后,仍然存活的对象 永久代: 比如intern()方法入池的对象实际上就进入了永久代, 永久代不会被回收。因为其本身属于一个bug性的存在,所以在 ...
分类:
编程语言 时间:
2020-01-18 14:55:32
阅读次数:
103
新生代收集器: SerialParNewParallel Scavenge 老年代收集器: Serial OldCMSParallel Old 堆内存垃圾收集器: G1 参考链接:JVM常见的垃圾回收器 ...
分类:
其他好文 时间:
2020-01-18 10:26:28
阅读次数:
187
? -Xms,-Xmn适用于调整个Jvm Heap大小,在内存不够的情况下可加大此值,这个值的大小取决于操作系统的位数和CPU的处理能力。 1.在整个heap内存不变的情况下,-Xmn↑调大,意味着老年代↓减小,发生FullGC的频率变大。 2.在-Xmn不变的情况下,Eden↑调大,以为Minor ...
分类:
其他好文 时间:
2020-01-15 14:01:01
阅读次数:
73
其他收集器的工作范围是整个新生代或者老年代、G1收集器的工作范围是整个Java堆。在使用G1收集器时,它将整个Java堆划分为多个大小相等的独立区域(Region)。虽然也保留了新生代、老年代的概念,但新生代和老年代不再是相互隔离的,他们都是一部分Region(不需要连续)的集合。 ...
分类:
编程语言 时间:
2020-01-12 15:17:29
阅读次数:
91
该算法是标记清除和标记整理的结合,标记-清除会产生碎片,标记-整理每次都进行整理效率不高;标记-清楚-整理 是如果老年代内存中没有一块连续续的空间可以存放将要进入对象,就进行整理;如果内存中的空间可以存放将要进入的对象,就进行标记-清除,这样就节省了整理的步骤可以提高效率。总结一句话:不是所有的时候... ...
分类:
编程语言 时间:
2020-01-12 11:38:33
阅读次数:
93
Serval Old收集器(-XX:+UseSerialOldGC, 标记-整理算法) 单线程收集,进行垃圾收集时,必须暂停所有工作线程 简单高效,Client模式下默认的老年代收集器 Parallel Old收集器(-XX:+UseParallelOldGC, 标记-整理算法)JDK 6后提供 多 ...
分类:
编程语言 时间:
2020-01-11 20:33:57
阅读次数:
167
堆是 JVM 所管理的最大的一块内存空间,主要用于存放各种类的实例对象。 在 JVM中,堆被划分成两个不同的区域:新生代 ( Young )、老年代 ( Old )。新生代 ( Young ) 又被划分为三个区域:Eden、From Survivor、To Survivor。 这样划分的目的是为了使 ...
分类:
其他好文 时间:
2020-01-11 18:48:22
阅读次数:
113