Java默认GC

各个版本对应的垃圾收集器:
Java 7 - Parallel GC
Java 8 - ParallelGC
Java 9 - G1 GC
Java 10- G1 GC
Java 11- ZGC (参见:ZGC
注:2017年不再维护CMS,参见Deprecate the Concurrent Mark Sweep  ,并且CMS在最新的jdk14 build#23版本中已经不能使用,看来官方在极力推进G1,ZGC等收集器的使用

原文地址:https://www.cnblogs.com/hsuchan/p/12149897.html

时间: 2024-10-11 02:59:45

Java默认GC的相关文章

JVM学习(4)——全面总结Java的GC算法和回收机制---转载自http://www.cnblogs.com/kubixuesheng/p/5208647.html

俗话说,自己写的代码,6个月后也是别人的代码--复习!复习!复习!涉及到的知识点总结如下: 一些JVM的跟踪参数的设置 Java堆的分配参数 -Xmx 和 –Xms 应该保持一个什么关系,可以让系统的性能尽可能的好呢?是不是虚拟机内存越大越好? Java 7之前和Java 8的堆内存结构 Java栈的分配参数 GC算法思想介绍 –GC ROOT可达性算法 –标记清除 –标记压缩 –复制算法 可触及性含义和在Java中的体现 finalize方法理解 Java的强引用,软引用,弱引用,虚引用 GC

序列化之Java默认序列化技术(ObjectOutputStream与ObjectInputStream)

Java默认序列化技术 主要是通过 对象输出流java.io.ObjectOutputStream 对象输入流java.io.ObjectInputStream 来实现的 package com.xingej.ser; public interface ISerializer { // 序列化,将obj序列化成字节数组 public <T> byte[] serialize(T obj); // 反序列化,将字节数组,反序列化为T public <T> T deserialize(

JAVA 从GC日志分析堆内存 第七节

JAVA 从GC日志分析堆内存 第七节 在上一章中,我们只设置了整个堆的内存大小.但是我们知道,堆又分为了新生代,年老代.他们之间的内存怎么分配呢?新生代又分为Eden和Survivor,他们的比例大小能改变吗?其实这些都是可控的,以前没有讲到是因为就算讲了也只是讲讲而已,看不到实质性的东西.因此这章我们通过分析GC日志来一步步讲解如何细化设置堆内存. 首先我们来了解几个相关的参数: -XX:+PrintGCDetails:用于告诉虚拟机回收垃圾的时候顺便打印日志. -Xloggc:路径 :将打

Java -verbose:gc 命令

Java -verbose:gc 中参数-verbose:gc 表示输出虚拟机中GC的详细情况. 使用后输出如下: [Full GC 168K->97K(1984K), 0.0253873 secs] 解读如下: 箭头前后的数据168K和97K分别表示垃圾收集GC前后所有存活对象使用的内存容量,说明有168K-97K=71K的对象容量被回收,括号内的数据1984K为堆内存的总容量,收集所需要的时间是0.0253873秒(这个时间在每次执行的时候会有所不同) Note:GC会暂用CPU时间片,有可

Java默认提供的线程池

Java的线程池都是通过ThreadPoolExecutor来构建. public ThreadPoolExecutor(int corePoolSize, int maximumPoolSize, long keepAliveTime, TimeUnit unit, BlockingQueue<Runnable> workQueue, ThreadFactory threadFactory, RejectedExecutionHandler handler) { if (corePoolSi

也学习Java/JVM/GC (三)

GC算法 目前HotSpot的GC算法是针对分代的GC算法,主要包括串行GC.并行GC.CMS GC和G1. 一.串行GC 串行GC可以在JVM的启动参数上加-XX:+UseSerialGC这个非标准化参数实现.串行GC会暂停应用,进行垃圾回收.多数运行在客户端机器并且 没有短暂停时间要求的应用使用串行GC.串行GC仅利用了一个虚拟的处理器进行垃圾回收. 在应用中使用串行GC命令: java -Xms20m -Xmx20m -Xmn10m -XX:+UseSerialGC -XX:+PrintG

也学习Java/JVM/GC(四)

GC日志分析 程序代码: 1 public class JvmTest { 2 public static void main(String[] args) { 3 4 int m = 1024 * 1024; 5 byte[] b = new byte[2 * m]; 6 System.out.println("allocate 2M"); 7 8 byte[] b1 = new byte[2 * m]; 9 System.out.println("allocate 2M&

JVM(3)对象A和B循环引用,最后会不会不被GC回收?-------关于Java的GC机制

①首先说一下,GC里边在JVM其中是使用的ROOT算法,ROOT算法,什么称作为ROOT呢,就是说类的静态成员,静态成员就是static修饰的那种,是"根"的一个,根还包含方法中的成员变量.仅仅有成员或对象不挂在根上,GC的时候就可能把他们搞掉,这里提到的循环引用,就看这个循环引用是否挂在根上,假设挂在根上.假设这个根还被JVM的Java代码所运行的话,就不会GC掉,假设说这个根已经被释放掉了.这个对象不挂在跟上了.那个这个对象就会被GC掉. ②说一下根搜索算法,ROOTS,这个算法,

java CMS gc解析

转载: http://www.blogjava.net/killme2008/archive/2009/09/22/295931.html     CMS,全称Concurrent Low Pause Collector,是jdk1.4后期版本开始引入的新gc算法,在jdk5和jdk6中得到了进一步改进,它的主要适合场景是对响应时间的重要性需求 大于对吞吐量的要求,能够承受垃圾回收线程和应用线程共享处理器资源,并且应用中存在比较多的长生命周期的对象的应用.CMS是用于对tenured gener