jdk11新特性——新的Epsilon垃圾收集器

news2025/1/27 13:10:50

目录

    • 一、Epsilon垃圾收集器概述
    • 二、Epsilon垃圾收集器用法
    • 三、Epsilon垃圾收集器代码示例
    • 四、使用Epsilon垃圾收集器的原因
    • 五、使用Epsilon垃圾收集器的主要用途

一、Epsilon垃圾收集器概述

  • A NoOp Garbage Collector
  • JDK上对这个特性的描述是: 开发一个处理内存分配但不实现任何实际内存回收机制的GC, 一旦可用堆内存用完, JVM就会退出。
  • 如果有System.gc()调用, 实际上什么也不会发生(这种场景下和-XX:+DisableExplicitGC效果一样), 因为没有内存回收, 这个实现可能会警告用户尝试强制GC是徒劳。

二、Epsilon垃圾收集器用法

  • 再 VM options选项中配置 -XX:+UnlockExperimentalVMOptions -XX:+UseEpsilonGC,如下图:
    在这里插入图片描述

三、Epsilon垃圾收集器代码示例

  • 示例代码

    package com.xz.jdk11.day1;
    import java.util.ArrayList;
    import java.util.List;
    
    /**
     * @description:
     * @author: xz
     */
    public class EpsilonTest {
        public static void main(String[] args) {
            boolean flag = true;
            List<Garbage> list = new ArrayList<>();
            long count = 0;
            while (flag) {
                list.add(new Garbage());
                if (count++ ==100) {
                    list.clear();
                    count++;
                }
            }
            System.out.println("程序结束");
        }
    }
    
    class Garbage {
        //这个方法是GC再清除本对象时,会调用一次
        @Override
        public void finalize() {
            System.out.println(this + "垃圾收集");
        }
    }
    
  • 运行,输出结果如下:
    在这里插入图片描述

  • 由上图输出结果可知,使用选项 -XX:+UseEpsilonGC, 程序很快就因为堆空间不足而退出。

四、使用Epsilon垃圾收集器的原因

  • 提供完全被动的GC实现,,具有有限的分配限制和尽可能低的延迟开销,但代价是内存占用和内存吞吐量。
  • java实现可广泛选择高度可配置的GC实现。各种可用的收集器最终满足不同的需求,,即使它们的可配置性使它们的功能相交。 有时更容易维护单独的实现,,而不是在现有GC实现上堆积另一个配置选项。

五、使用Epsilon垃圾收集器的主要用途

  • 性能测试(它可以帮助过滤掉GC引起的性能假象)
  • 内存压力测试(例如,知道测试用例 应该分配不超过1GB的内存, 我们可以使用-Xmx1g –XX:+UseEpsilonGC, 如果程序有问题, 则程序会崩溃)
  • 非常短的JOB任务(对象这种任务, 接受GC清理堆那都是浪费空间)
  • VM接口测试
  • Last-drop 延迟&吞吐改进

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/104907.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【Flink】Flink GET operation failed: Server side error 从blobserver下载错误

文章目录 1.概述2.服务器端1.概述 flink 报错 Flink GET operation failed: Server side error 从blobserver下载错误 java.io.IOException: GET operation failed: Server side error: /tmp/hadoop-www/nm-lo

技术栈入门-------Redis

使用redis的准备工作 1、在虚拟机上安装redis&#xff08;前提是安装了docker容器&#xff09; 上面使用到的命令 docker pull redis mkdir -p /mydata/redis/confdocker run -p 6379:6379 --name redis -v /mydata/redis/data:/data \ -v /mydata/redis/conf/redis.conf:/et…

Python相关软件下载教程

前言 想要在电脑端运行python程序&#xff0c;需要先下载三个软件&#xff1a;Python解释器&#xff0c;编辑器&#xff08;使用Visual Studio Code&#xff0c;简称VS Code&#xff09;&#xff0c;python软件包管理系统&#xff08;简称pip&#xff09;。 一、MacOS系统安装…

如何使用ArcGIS进行点抽稀(优化版)

概述 有的时候我们手上的数据很密集&#xff08;比如POI数据&#xff09;&#xff0c;全部加载出来会很挤&#xff0c;在我们只需要部分数据的情况下就需要对其进行抽稀&#xff0c;这里为大家介绍一种比较简单的抽稀方法&#xff0c;希望能对大家有所帮助。 按百分比抽稀 在…

ICG-Hydrazide,用于光热治疗或光动力治疗

ICG能够强烈地吸收光能将其转化为热能或产生单线态氧&#xff0c;可用于光热治疗(PTT)或光动力治疗(PDT)。 英文名称&#xff1a;ICG-Hydrazide 外观&#xff1a;固体/粉末 质量纯度&#xff1a;95% 储存条件&#xff1a;-20℃ 结构式&#xff1a; 凯新生物运输说明: 极低…

Linux学习-87-LNMP一键安装过程

17.16 LNMP安装的前期准备&#xff08;LNMP一键安装包下载&#xff09; 手工安装 LNMP 环境&#xff0c;那么同样需要安装大概 10多个源码包&#xff08;根据版本和功能不同而不同&#xff09;。不过&#xff0c;现在网上非常流行的 LNMP 环境的搭建过程是采用 LNMP 一键安装包…

25岁,放弃4年所学专业,年薪20W+,我选择了转行。

25岁,没被迫转行, 是主动选择转行&#xff0c;放弃海外20W年薪“稳定”生活&#xff0c;目前已辞职&#xff0c;正在休整准备寻找工作中。希望我的经历可以给大家带来一点启发和借鉴。 首先自我介绍下。90后大叔&#xff0c;土木工程专业&#xff0c;2017年毕业于中南搬砖摇篮…

非零基础自学Golang 第12章 接口与类型 12.6 小结 12.7 知识拓展

非零基础自学Golang 文章目录非零基础自学Golang第12章 接口与类型12.6 小结12.7 知识拓展12.7.1 非侵入式接口第12章 接口与类型 12.6 小结 了解什么是鸭子类型。掌握接口的定义与实现。了解什么是接口嵌入。掌握空接口的常见用法&#xff0c;如空接口的赋值操作。掌握类型断…

C语言知识学习归纳总结(逐梦篇专栏合集)

上一专栏: 项目实战合集 逐梦编程&#xff0c;让中华屹立世界之巅。 简单的事情重复做,重复的事情用心做,用心的事情坚持做&#xff1b; 文章目录前言一、逐梦篇目录合集二、不忘初心"Hello world"总结壁纸&#xff08;与你同在&#xff09;前言 不知不觉中&#x…

详解事务:Mysql事务、Spring事务、分布式事务

详解事务&#xff1a;Mysql事务、Spring事务、分布式事务&#xff08;一&#xff09;Mysql事务【1】4种隔离级别【2】测试案例&#xff08;二&#xff09;Spring事务【1】准备测试代码&#xff08;1&#xff09;添加依赖&#xff08;2&#xff09;配置文件&#xff08;3&#x…

《classnames源码》阅读笔记

源码目录总览 参考官方文档中的内容&#xff0c;我们可以知道classnames 有一个主要版本&#xff08;index&#xff09;和两个替代版本 &#xff08;分别是dedupe 和 bind&#xff09;。在看目录的时候也可以发现 classnames 具有多个对外暴露的入口。 index.js是classnames的主…

Spring MVC【参数的获取与数据返回】

Spring MVC【参数的获取与上传】&#x1f34e;一. 获取参数&#x1f352;1.1 获取单个参数&#x1f352;1.2 获取多个参数&#x1f352;1.3 获取多个参数&#x1f352;1.4 获取URL中参数 (PathVariable)&#x1f34e;二. 上传文件 (RequestPart)&#x1f352;2.1 postman模拟上…

目标检测论文解读复现【NO.23】FS-YOLOv5:轻量化红外目标检测方法

前言 此前出了目标改进算法专栏&#xff0c;但是对于应用于什么场景&#xff0c;需要什么改进方法对应与自己的应用场景有效果&#xff0c;并且多少改进点能发什么水平的文章&#xff0c;为解决大家的困惑&#xff0c;此系列文章旨在给大家解读最新目标检测算法论文&#xff0…

33个CadQuery程序化建模实例

本文介绍的33个建模示例可以帮助你了解如何使用 CadQuery 构建3D对象。示例是从简单到复杂组织起来的&#xff0c;因此按顺序学习它们是吸收它们的最佳方式。 1、简易矩形板 最简单的例子&#xff0c;一个矩形盒子&#xff1a; result cadquery.Workplane("front&qu…

食品加工企业自营商城小程序开发,帮助企业增加销售渠道,提高销量

随着生活水平的不断提高&#xff0c;人们对于食品质量提出了更高的要求。传统人们购买食品时只能到超市或者市场进行食品采购&#xff0c;需要花费一定的时间和精力&#xff0c;而且经过多层中间商赚取差价的原因性价比也并不高。在移动电商的时代发展下&#xff0c;很多企业商…

『 canvas 动画』为了让老婆彻底理解正弦和余弦,我连夜制作了这个效果

前言 最近在做 canvas 相关的效果时&#xff0c;经常用到三角函数以及正/余弦相关的数字知识&#xff0c;这些知识点都是我们在初中的时候就学过的&#xff0c;但是这么多年基本已经忘的差不多了&#xff0c;刚好最近又学到了一个用 canvas 来实现的正/余弦动画效果&#xff0…

成功转行Python工程师,年薪30W+,经验总结都在这

这是给转行做Python的小白的参考&#xff0c;无论是从零开始&#xff0c;或者是转行的朋友来说&#xff0c;这都是值得一看的&#xff0c;也是可以作为一种借鉴吧。 而且我决定转行IT&#xff08;互联网&#xff09;行业&#xff0c;其实理由也很简单&#xff0c;不用动体力&a…

循环冗余编码(CRC编码)与海明码(考研前突击一下QAQ)

循环冗余编码&#xff08;CRC编码&#xff09;与海明码 一.环冗余编码 1.循环冗余编码的形成 生成多项式&#xff1a;G1011 表示成生成多项式为G(x)X3X1X^3X1X3X1 示例&#xff1a; 假设信息字节为&#xff1a;F1001010 选取生成多项式&#xff08;默认&#xff09;G1011 将…

2022年下半年部分团队的总结

这是 2021 年年底的汇报。 这是 2022 年上半年的汇报。 踏石留印 抓铁有痕 CSDN 是中国 IT 人士学习&#xff0c;成长&#xff0c;成功的平台。除了一些创新的探索之外&#xff0c; 20 多年来&#xff0c;CSDN 团队为这个平台开发和维护着各种基本功能和服务&#xff0c;还进…

自动化测试技术笔记(一):前期调研怎么做

昨天下午在家整理书架&#xff0c;把很多看完的书清理打包好&#xff0c;预约了公益捐赠机构上门回收。 整理的过程中无意翻出了几年前的工作记事本&#xff0c;里面记录了很多我刚开始做自动化和性能测试时的笔记。虽然站在现在的角度来看&#xff0c;那个时候无论是技术细节…