站在垃圾收集器的角度来看,可以把内存分为新生代与老年代。内存的分配规则取决于当前使用的是哪种垃圾收集器的组合,以及内存相关的参数配置。往大的方向说,对象优先分配在新生代的Eden区域,而大对象直接进入老年代。 第一, 新生代的Eden区域,对象优先分配在该区域,同时JVM可以为每个线程分配一个私有的 ...
分类:
其他好文 时间:
2019-11-20 16:49:12
阅读次数:
82
一、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
引言: 前面的文章提到,Heap包括了PSYoungGen、ParOldGen、Metaspace。JVM 在进行GC时,并非每次都对上面三个内存区域一起回收的,大部分时候回收的都是新生代。由于新生代和老年代的内存空间大小不同以及对象存活率不同,所以针对不同区域JVM采用了不同的GC,不同的GC是通 ...
分类:
编程语言 时间:
2019-10-15 13:42:41
阅读次数:
159
① 对象的内存分配,总体上讲就是在堆上分配,对象主要分配在新生代的Eden区,少数情况也会直接分配在老年代。分配的规则并不是百分百固定的,其细节取决于当前使用的是哪一种垃圾收集器组合,还有虚拟机中与内存相关的参数配置。 对象优先在Eden区分配 大多数情况下,对象在新生代Eden区分配。当Eden区 ...
分类:
其他好文 时间:
2019-10-08 22:22:17
阅读次数:
90
① Java虚拟机根据对象存活的周期不同,把堆内存划分为几块,一般分为新生代、老年代和永久代(对HotSpot虚拟机而言),这就是JVM的内存分代策略。 Java虚拟机根据对象存活的周期不同,把堆内存划分为几块,一般分为新生代、老年代和永久代(对HotSpot虚拟机而言),这就是JVM的内存分代策略 ...
分类:
其他好文 时间:
2019-10-08 21:44:26
阅读次数:
91
我是用了netty搭建了一个UDP接收日志,堆启动配置 Xmx256 Xms256 ,项目刚启动的时候,系统进程占用内存很正常,在250M左右。 长时间运行之后发现,进程占用内存不断增长,远远超过了我设置的堆内存大小,查看幸存者,伊甸园,老年代,gc都很正常,堆使用数据一切正常,甚至我怀疑元空间占用 ...
分类:
其他好文 时间:
2019-09-27 12:29:18
阅读次数:
156
①:Serial(串行)收集器 最基本,历史最悠久的串行收集器,单线程组赛队列,jdk1.5之前默认的收集器。 优点:简单高效,没有线程交互的开销。 缺点:单线程,只会使用一个cpu/一条收集线程去完成垃圾收集。 对应算法:年轻代复制算法,老年代标记整理算法。 ②:ParNew收集器(Serial收 ...
分类:
其他好文 时间:
2019-09-27 01:11:55
阅读次数:
82
JVM内存包括区域 Heap(堆区) New Generation(新生代) Eden 伊甸园 Survivor From Survivor To Old Generation(老年代) 方法区 Permanent Generation(持久代) Stack(栈区) Metaspace(元空间) D ...
分类:
其他好文 时间:
2019-09-25 22:44:43
阅读次数:
154