首页 > 其他分享 >【垃圾回收器】JDK的垃圾回收器

【垃圾回收器】JDK的垃圾回收器

时间:2023-05-16 11:24:05浏览次数:46  
标签:JDK G1 回收 JDK8 垃圾 CMS 内存

JDK不同版本的默认垃圾回收器

JDK1.7: PS + PO
JDK1.8: PS + PO
JDK1.9: G1

另,要注意的是:
(1)CMS从来不是某个版本默认的垃圾回收器;
(2)CMS是划时代的,从1.4开始出现,开启了并发回收。但它的缺点也很明显,并不是默认的垃圾回收。
(3)G1 是从jdk1.7开始,但到1.8才比较稳定,所以G1基本从1.8 就开始用了
(4)CMS 有两个比较致命的缺点,浮动垃圾和碎片化
其中:如果在清理过程中预留给用户线程的内存不足就会出现‘Concurrent Mode Failure’,一旦出现此错误时便会切换到SerialOld收集方式,而切换到 SerialOld收集方式,那STW时间可能就非常长了。所以现在都更宁愿使用G1。

2、查看GC详情
-XX:+PrintGCDetails 加这个参数。
其中 + 表示使用, - 表示不使用,比如 : -XX:-PrintGCDetails 就表示不打印(当然不会有种写法,因为不打印详情是默认选项,只是举个例子)


参考: https://blog.csdn.net/calm_encode/article/details/106621152





关于CMS和G1物理内存的回收

在JDK8+CMS的配置下,JVM并不是立马归还内存给到操作系统,而是随着FullGC次数的增多逐渐归还,最终会全部归还
在JDK11+CMS的配置下和JDK8+CMS的情况相同(JVM并不是立马归还内存给到操作系统,而是随着FullGC次数的增多逐渐归还,最终会全部归还)

在JDK8+G1的配置下,JVM都是在每一次FullGC后全部归还物理内存
JDK11下的G1和JDK8下的G1对内存的响应是不一样的。 从堆内存变化来看, JDK11下G1更加倾向于尽可能的利用内存,不着急回收。 而JDK8下G1则是倾向于尽可能的先回收内存。 从图中看,JDK8下G1的实际使用的堆内存大小基本是JDK11下G1的一半


参考: https://blog.csdn.net/qq_40378034/article/details/110677269 (关于CMS和G1物理内存的回收)

标签:JDK,G1,回收,JDK8,垃圾,CMS,内存
From: https://www.cnblogs.com/aaacarrot/p/17404326.html

相关文章

  • MATLAB代码:计及电转气协同的含碳捕集与垃圾焚烧虚拟电厂优化调度
    MATLAB代码:计及电转气协同的含碳捕集与垃圾焚烧虚拟电厂优化调度关键词:碳捕集虚拟电厂需求响应优化调度电转气协同调度参考文档:《计及电转气协同的含碳捕集与垃圾焚烧虚拟电厂优化调度》复现程序仿真平台:MATLAB+CPLEX使用的是yalmip+cplex求解器完成求解,购买前可以看运行结......
  • JDK安装教程(Windows)
    Windows端:1.安装        首先进入官网:https://www.oracle.com/java/technologies/javase-downloads.html        因为我已经安装了JDK8,所以我就以 JDK15 举例(平时还是建议JDK8):                        下载对应的版本  ......
  • 12、HDFS Trash垃圾桶回收介绍与示例
    文章目录Hadoop系列文章目录一、介绍二、HDFSTrash功能开启1、关闭HDFS集群2、修改core-site.xml文件3、同步集群配置文件4、启动HDFS集群三、HDFSTrash功能验证1、删除文件并验证2、不进回收站的删除3、从Trash中恢复文件4、清空Trash本文主要介绍HDFSTrash垃圾桶回收。前提......
  • JDK各版本特性(ing)
    前言为什么要开始写JDK特性?因为自毕业工作以来我基本就没离开过JDK8,不知不觉外面都已经推出JDK20了,JDK作为Java程序员的基础,我不能再这么放纵自己了!每个版本的新特性肯定都是解决了某些问题或者是推出一些新概念,掌握后可以一定程度的让自己的开发有更多的解题思路。那么接下来会......
  • linux中安装jdk
    安装步骤:1.首先我们需要一台虚拟机或者一台配置了环境的服务器这里我们使用阿贝云服务器。2.搜索需要的jdkyumsearchjdk 3.安装需要的版本yuminstall java-1.8.0-openjdk-devel.x86_644.安装完成查看版本......
  • Linux下部署安装JDK
    系统:Centos7安装jdk版本:1.8.0_371安装方式:压缩包jdk官网下载 https://www.oracle.com/java/technologies/downloads/#java8 先用Java-version命令检测系统是否默认安装了jdk,如有可以使用rpm命令卸载!1、利用工具将下载的包放到/usr/local下并解压#切换到jdk目录下cd/u......
  • python的垃圾回收
    一、引入python解释器在执行到定义变量的语法时,会申请内存空间来存放变量的值,而内存的容量是有限的,这就涉及到变量值所占用内存空间的回收问题,当一个变量值没有用了(简称垃圾)就应该将其占用的内存给回收掉,那什么样的变量值是没有用的呢?单从逻辑层面分析,我们定义变量将变量值......
  • MATLAB代码:计及电转气协同的含碳捕集与垃圾焚烧虚拟电厂优化调度
    MATLAB代码:计及电转气协同的含碳捕集与垃圾焚烧虚拟电厂优化调度关键词:碳捕集虚拟电厂需求响应优化调度电转气协同调度参考文档:《计及电转气协同的含碳捕集与垃圾焚烧虚拟电厂优化调度》复现程序仿真平台:MATLAB+CPLEX使用的是yalmip+cplex求解器完成求解ID:288067079528436......
  • 聊聊垃圾回收机制
    引入当解释器再执行到定义变量的语法时,会申请内存空间来存放变量的值,但是内存的容量时有限的,当你不需要该变量值时它仍然会占用你的内存空间,这就设计到了‘垃圾’的回收问题,当一个变量值没有用后我们应该将其回收掉以释放内存。单从逻辑层面分析,我们定义变量的值存起来......
  • Matlab代码#优化调度#计及电转气协同的含碳捕集与垃圾焚烧虚拟电厂优化调度
    Matlab代码#优化调度#计及电转气协同的含碳捕集与垃圾焚烧虚拟电厂优化调度#电转气协同、碳捕集、虚拟电厂优化调度#matlab程序,计及电转气协同的含碳捕集与垃圾焚烧虚拟电厂优化调度,看下面的图片是运行结果,程序不负责讲解,采用yalmip+cplex求解器求解。碳捕集,电转气,P2G,优化调度ID:......