站在垃圾收集器的角度来看,可以把内存分为新生代与老年代。内存的分配规则取决于当前使用的是哪种垃圾收集器的组合,以及内存相关的参数配置。往大的方向说,对象优先分配在新生代的Eden区域,而大对象直接进入老年代。 第一, 新生代的Eden区域,对象优先分配在该区域,同时JVM可以为每个线程分配一个私有的 ...
分类:
其他好文 时间:
2019-11-20 16:49:12
阅读次数:
82
(1)DefNew(串行)收集器 Serial(串行)垃圾收集器是最基本、发展历史最悠久的收集器;JDK1.3.1前是HotSpot新生代收集的唯一选择; 特点: (1) 针对新生代采用复制算法,单线程收集器,进行垃圾收集时,必须暂停所有工作线程,直到工作完成。即会:Stop the World ( ...
分类:
其他好文 时间:
2019-11-01 13:13:16
阅读次数:
98
一、jvm内存模型 JVM 内存模型主要分为堆、程序计数器、方法区、虚拟机栈和本地方法栈 1、堆 1.1、堆是 JVM 内存中最大的一块内存空间。 1.2、该内存被所有线程共享,几乎所有对象和数组都被分配到了堆内存中。 1.3、堆被划分为新生代和老年代,新生代又被进一步划分为 Eden 和 Surv ...
分类:
编程语言 时间:
2019-10-31 01:18:47
阅读次数:
120
Full GC、Minor GC和Major GC的区别 Minor GC:发生在新生代的垃圾收集动作,因为JAVA对象大部分都具备朝生夕灭的特效,所以Minor GC会比较频繁且回收速度比较快 Major GC/Full GC 指发生在老年代的垃圾回收动作,出现Major经常会出现一次Minor ...
分类:
其他好文 时间:
2019-10-30 21:12:42
阅读次数:
111
[toc] 在开始介绍CMS和G1前,我们可以剧透几点: 根据不同分代的特点,收集器可能不同。有些收集器可以同时用于新生代和老年代,而有些时候,则需要分别为新生代或老年代选用合适的收集器。一般来说,新生代收集器的收集频率较高,应选用性能高效的收集器;而老年代收集器收集次数相对较少,对空间较为敏感,应 ...
分类:
其他好文 时间:
2019-10-22 11:05:35
阅读次数:
473
1、串行垃圾收集器线程:单线程,无需线程交互,效率高;适用于单核处理器,或者小数据量(100M)情况下 ; -XX:UseSerialGC : 打开串行收集器 2、并行垃圾收集器线程:多线程,减少垃圾回收时间,适用于多核处理器; -XX:UseParallelGC : 打开串行收集器,仅用于新生代; ...
分类:
其他好文 时间:
2019-10-16 13:27:43
阅读次数:
87
引言: 前面的文章提到,Heap包括了PSYoungGen、ParOldGen、Metaspace。JVM 在进行GC时,并非每次都对上面三个内存区域一起回收的,大部分时候回收的都是新生代。由于新生代和老年代的内存空间大小不同以及对象存活率不同,所以针对不同区域JVM采用了不同的GC,不同的GC是通 ...
分类:
编程语言 时间:
2019-10-15 13:42:41
阅读次数:
159
四种算法 引用计数(循环引用不能解决) 复制(新生代) 标记-整理 标记-清除 四种主要的垃圾回收器 Serial串行回收:为单线程生产环境设计并使用一个线程进行回收,会暂停所有的用户线程,不适合服务器环境 砸瓦鲁多!!! parallel并行回收:多个垃圾收集器线程并行执行,此时用户线程暂停,适用 ...
分类:
编程语言 时间:
2019-10-13 15:13:11
阅读次数:
112
① 对象的内存分配,总体上讲就是在堆上分配,对象主要分配在新生代的Eden区,少数情况也会直接分配在老年代。分配的规则并不是百分百固定的,其细节取决于当前使用的是哪一种垃圾收集器组合,还有虚拟机中与内存相关的参数配置。 对象优先在Eden区分配 大多数情况下,对象在新生代Eden区分配。当Eden区 ...
分类:
其他好文 时间:
2019-10-08 22:22:17
阅读次数:
90
① Java虚拟机根据对象存活的周期不同,把堆内存划分为几块,一般分为新生代、老年代和永久代(对HotSpot虚拟机而言),这就是JVM的内存分代策略。 Java虚拟机根据对象存活的周期不同,把堆内存划分为几块,一般分为新生代、老年代和永久代(对HotSpot虚拟机而言),这就是JVM的内存分代策略 ...
分类:
其他好文 时间:
2019-10-08 21:44:26
阅读次数:
91