Java虚拟机(JVM)垃圾回收器

HotSpot虚拟机中的7种垃圾收集器:Serial、ParNew、Parallel Scavenge、Serial Old、Parallel Old、CMS、G1,先介绍一些垃圾收集的相关概念,再介绍它们的主要特点、应用场景、以及一些设置参数和基本运行原理。 1、垃圾收集器概述 垃圾收集器是垃圾回收算法(标记-清除算 ...阅读更多

Posted on

Java虚拟机(JVM)垃圾回收器G1收集器

G1收集器 G1(Garbage-First)是JDK7-u4才推出商用的收集器; 1、特点 (A)、并行与并发 能充分利用多CPU、多核环境下的硬件优势; 可以并行来缩短"Stop The World"停顿时间; 也可以并发让垃圾收集与用户程序同时进行; (B)、分代收集,收集范围包括新生代和老年代 能独立管理整个G ...阅读更多

Posted on

Java虚拟机(JVM)垃圾回收器CMS收集器

CMS收集器 并发标记清理(Concurrent Mark Sweep,CMS)收集器也称为并发低停顿收集器(Concurrent Low Pause Collector)或低延迟(low-latency)垃圾收集器; 在前面ParNew收集器曾简单介绍过其特点; 1、特点 针对老年代; 基于"标记-清除"算法(不进行 ...阅读更多

Posted on

Java虚拟机(JVM)垃圾回收器Parallel Old收集器

Parallel Old收集器 Parallel Old垃圾收集器是Parallel Scavenge收集器的老年代版本; JDK1.6中才开始提供; 1、特点 针对老年代; 采用"标记-整理"算法; 多线程收集; Parallel Scavenge/Parallel Old收集器运行示意图如下: 2、应用场景 JDK ...阅读更多

Posted on

Java虚拟机(JVM)垃圾回收器Serial Old收集器

Serial Old收集器 Serial Old是 Serial收集器的老年代版本; 1、特点 针对老年代; 采用"标记-整理"算法(还有压缩,Mark-Sweep-Compact); 单线程收集; Serial/Serial Old收集器运行示意图如下: 2、应用场景 主要用于Client模式; 而在Server模式 ...阅读更多

Posted on

Java虚拟机(JVM)垃圾回收器Parallel Scavenge收集器

Parallel Scavenge收集器 Parallel Scavenge垃圾收集器因为与吞吐量关系密切,也称为吞吐量收集器(Throughput Collector)。 1、特点 (A)、有一些特点与ParNew收集器相似 新生代收集器; 采用复制算法; 多线程收集; (B)、主要特点是:它的关注点与其他收集器不同 ...阅读更多

Posted on

Java虚拟机(JVM)垃圾回收器ParNew收集器

ParNew收集器 ParNew垃圾收集器是Serial收集器的多线程版本。 1、特点 除了多线程外,其余的行为、特点和Serial收集器一样; 如Serial收集器可用控制参数、收集算法、Stop The World、内存分配规则、回收策略等; 两个收集器共用了不少代码;       ParNew/Serial Ol ...阅读更多

Posted on

Java虚拟机(JVM)垃圾回收器Serial收集器

Serial收集器 Serial(串行)垃圾收集器是最基本、发展历史最悠久的收集器; JDK1.3.1前是HotSpot新生代收集的唯一选择; 1、特点 针对新生代; 采用复制算法; 单线程收集; 进行垃圾收集时,必须暂停所有工作线程,直到完成; 即会"Stop The World"; Serial/Serial Ol ...阅读更多

Posted on

Java虚拟机(JVM)的堆

Java 中的堆是 JVM 所管理的最大的一块内存空间,主要用于存放各种类的实例对象。 在 Java 中,堆被划分成两个不同的区域:新生代 ( Young )、老年代 ( Old )。新生代 ( Young ) 又被划分为三个区域:Eden、From Survivor、To Survivor。 这样划分的目的是为了使 ...阅读更多

Posted on

Java虚拟机(JVM)的方法区(Method Area)存储了什么内容?

1、JVM内存模型 大多数JVM将内存分配为Method Area(方法区)、Heap(堆)、Program Counter Register(程序计数器)、JAVA Method Stack(JAVA方法栈)、Native Method Stack(本地方法栈)。 2、 方法区(Method Area) 线程共享,存 ...阅读更多

Posted on

Java的虚拟机(JVM)的原理讲解

首先我想从宏观上介绍一下Java虚拟机的工作原理。从最初的我们编写的Java源文件(.java文件)是如何一步步执行的,如下图所示,首先Java源文件经过前端编译器(javac或ECJ)将.java文件编译为Java字节码文件,然后JRE加载Java字节码文件,载入系统分配给JVM的内存区,然后执行引擎解释或编译类文件 ...阅读更多

Posted on

Java的虚拟机(JVM)的类加载子系统的解析过程

类加载子系统是JVM里面的一个重要的环节。与C/C++那些需要在编译器期进行连接工作的语言不同,Java类的加载、连接和初始化都是在程序运行时完成的,只有在类被需要的时候才进行动态加载。 1)JVM何时加载类? 有且只有以下5种情况: 创建新对象(new)、设置/读取static字段(putstatic/getstat ...阅读更多

Posted on