JVM常用概念之垃圾回收设计与停顿

在我们应用程序运行期间,我们是需要尽可能避免垃圾回收。
请添加图片描述
图1:不同垃圾回收器的设计(黄色代表STW,绿色代表并发)

实验

计算机配置

Hardware Overview:Model Name:	MacBook ProModel Identifier:	MacBookPro14,2Processor Name:	Intel Core i5Processor Speed:	3.1 GHzNumber of Processors:	1Total Number of Cores:	2L2 Cache (per Core):	256 KBL3 Cache:	4 MBMemory:	8 GBBoot ROM Version:	428.0.0.0.0SMC Version (system):	2.44f1Serial Number (system):	Hardware UUID:	

JDK环境

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

实验源码

import java.util.*;public class Case3 {static List<Object> array;public static void main(String [] args) {array = new ArrayList<>();for (int i = 0; i < 100000000; i++) {array.add(new Object());}}
}

用例

JDK9-G1

time java -Xms4G -Xmx4G -Xlog:gc Case3
[0.036s][info][gc] Using G1
[1.576s][info][gc] GC(0) Pause Young (G1 Evacuation Pause) 370M->366M(4096M) 952.195ms
[2.817s][info][gc] GC(1) Pause Young (G1 Evacuation Pause) 744M->747M(4096M) 847.381ms
[4.056s][info][gc] GC(2) Pause Young (G1 Evacuation Pause) 1105M->1106M(4096M) 776.229ms
[5.561s][info][gc] GC(3) Pause Young (G1 Evacuation Pause) 1552M->1554M(4096M) 771.033ms
[6.332s][info][gc] GC(4) Pause Young (G1 Evacuation Pause) 1732M->1733M(4096M) 557.217ms
[6.899s][info][gc] GC(5) Pause Initial Mark (G1 Humongous Allocation) 1894M->1896M(4096M) 422.604ms
[6.899s][info][gc] GC(6) Concurrent Cycle
[8.534s][info][gc] GC(7) Pause Young (G1 Evacuation Pause) 2476M->2477M(4096M) 569.203ms
[9.226s][info][gc] GC(8) Pause Young (G1 Evacuation Pause) 2655M->2656M(4096M) 490.367ms
[12.341s][info][gc] GC(6) Pause Remark 2758M->2758M(4096M) 1.318ms
[13.057s][info][gc] GC(6) Pause Cleanup 2758M->2212M(4096M) 2.659ms
[13.173s][info][gc] GC(6) Concurrent Cycle 6273.724msreal	0m13.399s
user	0m29.455s
sys	0m2.855s

JDK9-Parallel

time java -XX:+UseParallelOldGC -Xms4G -Xmx4G -Xlog:gc Case3
[0.024s][info][gc] Using Parallel
[1.591s][info][gc] GC(0) Pause Young (Allocation Failure) 878M->714M(3925M) 892.647ms
[3.270s][info][gc] GC(1) Pause Young (Allocation Failure) 1738M->1442M(3925M) 1371.100msreal	0m3.644s
user	0m7.956s
sys	0m1.088s

JDK9-Concurrent Mark Sweep

time java -XX:+UseConcMarkSweepGC -Xms4G -Xmx4G -Xlog:gc Case3
Java HotSpot(TM) 64-Bit Server VM warning: Option UseConcMarkSweepGC was deprecated in version 9.0 and will likely be removed in a future release.
[0.026s][info][gc] Using Concurrent Mark Sweep
[1.661s][info][gc] GC(0) Pause Young (Allocation Failure) 259M->231M(4062M) 1361.996ms
[2.293s][info][gc] GC(1) Pause Young (Allocation Failure) 497M->511M(4062M) 563.307ms
[2.974s][info][gc] GC(2) Pause Young (Allocation Failure) 777M->851M(4062M) 623.093ms
[3.527s][info][gc] GC(3) Pause Young (Allocation Failure) 1117M->1161M(4062M) 502.224ms
[4.807s][info][gc] GC(4) Pause Young (Allocation Failure) 1694M->1828M(4062M) 1038.882ms
[6.565s][info][gc] GC(5) Pause Young (Allocation Failure) 2094M->2364M(4062M) 1688.745ms
[6.580s][info][gc] GC(6) Pause Initial Mark 2369M->2369M(4062M) 14.197ms
[6.580s][info][gc] GC(6) Concurrent Mark
[9.074s][info][gc] GC(7) Pause Young (Allocation Failure) 3031M->3166M(4062M) 1581.572ms
[15.418s][info][gc] GC(6) Concurrent Mark 8838.424ms
[15.418s][info][gc] GC(6) Concurrent Preclean
[15.485s][info][gc] GC(6) Concurrent Preclean 67.031ms
[15.486s][info][gc] GC(6) Concurrent Abortable Preclean
[15.486s][info][gc] GC(6) Concurrent Abortable Preclean 0.126ms
[15.718s][info][gc] GC(6) Pause Remark 3390M->3390M(4062M) 232.467ms
[15.719s][info][gc] GC(6) Concurrent Sweep
[16.728s][info][gc] GC(6) Concurrent Sweep 1009.828ms
[16.728s][info][gc] GC(6) Concurrent Reset
[16.744s][info][gc] GC(6) Concurrent Reset 15.565msreal	0m17.045s
user	0m29.167s
sys	0m4.394s

OpenJDK11-Shenandoah

time java -XX:+UseShenandoahGC -Xms4G -Xmx4G -Xlog:gc Case3
[0.006s][info][gc] Min heap equals to max heap, disabling ShenandoahUncommit
[0.012s][info][gc] Heuristics ergonomically sets -XX:+ExplicitGCInvokesConcurrent
[0.012s][info][gc] Heuristics ergonomically sets -XX:+ShenandoahImplicitGCInvokesConcurrent
[0.013s][info][gc] Using Shenandoah
[0.894s][info][gc] Trigger: Learning 1 of 5. Free (2860M) is below initial threshold (2867M)
[0.896s][info][gc] GC(0) Concurrent reset 0.560ms
[1.062s][info][gc] GC(0) Pause Init Mark (process weakrefs) 0.634ms
[3.511s][info][gc] Cancelling GC: Stopping VM
[3.511s][info][gc] GC(0) Concurrent marking (process weakrefs) 2449.346msreal	0m3.760s
user	0m3.191s
sys	0m1.752s

JDK17-Epsilon

time java -XX:+UnlockExperimentalVMOptions -XX:+UseEpsilonGC -Xms4G -Xmx4G  -Xlog:gc Case3
[0.004s][info][gc] Using Epsilon
[0.005s][warning][gc,init] Consider enabling -XX:+AlwaysPreTouch to avoid memory commit hiccups
[0.199s][info   ][gc     ] Heap: 4096M reserved, 4096M (100.00%) committed, 205M (5.01%) used
[0.314s][info   ][gc     ] Heap: 4096M reserved, 4096M (100.00%) committed, 453M (11.07%) used
[0.442s][info   ][gc     ] Heap: 4096M reserved, 4096M (100.00%) committed, 676M (16.51%) used
[0.639s][info   ][gc     ] Heap: 4096M reserved, 4096M (100.00%) committed, 1014M (24.77%) used
[0.918s][info   ][gc     ] Heap: 4096M reserved, 4096M (100.00%) committed, 1222M (29.85%) used
[0.941s][info   ][gc     ] Heap: 4096M reserved, 4096M (100.00%) committed, 1517M (37.06%) used
[1.483s][info   ][gc     ] Heap: 4096M reserved, 4096M (100.00%) committed, 1725M (42.14%) used
[1.660s][info   ][gc     ] Heap: 4096M reserved, 4096M (100.00%) committed, 2274M (55.54%) used
[2.102s][info   ][gc     ] Heap: 4096M reserved, 4096M (100.00%) committed, 2482M (60.62%) used
[2.287s][info   ][gc     ] Heap: 4096M reserved, 4096M (100.00%) committed, 2690M (65.70%) used
[2.340s][info   ][gc     ] Heap: 4096M reserved, 4096M (100.00%) committed, 2730M (66.67%) usedreal	0m2.551s
user	0m1.307s
sys	0m1.030s

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

大摩闭门会:250228 学习总结报告

如果图片分辨率不足&#xff0c;可右键图片在新标签打开图片或者下载末尾源文件进行查看 本文只是针对视频做相应学术记录&#xff0c;进行学习讨论使用

【Docker】使用Docker搭建-MySQL数据库服务

零、更换Docker镜像源 因为国内现在封锁了Docker默认拉取镜像的站点&#xff08;DockerHub&#xff09;&#xff0c;而且国内大部分Docker镜像站已全部下线&#xff0c;导致现在很多朋友在拉取镜像的时候会出现无法拉取的现象&#xff0c;这时候就需要进行更换Docker镜像源。 可…

商米科技前端工程师(base上海)内推

1.根据原型或高保真设计&#xff0c;开发web、H5、小程序等类型的前端应用&#xff1b; 2.在指导下&#xff0c;高质量完成功能模块的开发&#xff0c;并负责各功能模块接口设计工作&#xff1b; 3.负责产品及相关支撑系统的开发及维护工作&#xff0c;不断的优化升级&#x…

如何在docker中的mysql容器内执行命令与执行SQL文件

通过 docker ps -a 查询当前运行的容器&#xff0c;找到想执行命令的容器名称。 docker ps -a若想执行sql文件&#xff0c;则将sql文件放入当前文件夹下后将项目内的 SQL 文件拷贝到 mysql 容器内部的 root下。 sudo docker cp /root/enterprise.sql mysql:/root/然后进入 my…

【2025年2月28日稳定版】小米路由器4C刷机Immortalwrt 23.05.4系统搭载mentohust 0.3.1插件全记录

小米路由器4C刷机Immortalwrt系统搭载mentohust插件全记录 首先将路由器按住后面的reset&#xff0c;用一个针插进去然后等待5s左右&#xff0c;松开&#xff0c;即可重置路由器。 然后要用物理网线物理连接路由器Lan口和电脑&#xff0c;并将路由器WAN口连接至网口。确保电脑…

7.1.2 计算机网络的分类

文章目录 分布范围交换方式 分布范围 计算机网络按照分布范围可分为局域网、广域网、城域网。局域网的范围在10m~1km&#xff0c;例如校园网&#xff0c;网速高&#xff0c;主要用于共享网络资源&#xff0c;拓扑结构简单&#xff0c;约束少。广域网的范围在100km&#xff0c;例…

Linux——进程池

前言&#xff1a;大佬写博客给别人看&#xff0c;菜鸟写博客给自己看&#xff0c;我是菜鸟。 1.实现思路 思路&#xff1a;通过创建匿名管道&#xff0c;来实现父子进程之间的通信 注1&#xff1a;父写&#xff0c;子读 注2&#xff1a;匿名管道只能用来进行具有血管关系的进程…

北京大学DeepSeek与AIGC应用(PDF无套路下载)

近年来&#xff0c;人工智能技术飞速发展&#xff0c;尤其是大模型和生成式AI&#xff08;AIGC&#xff09;的突破&#xff0c;正在重塑各行各业的生产方式与创新路径。 北京大学联合DeepSeek团队推出的内部研讨教程《DeepSeek与AIGC应用》&#xff0c;以通俗易懂的方式系统解…

解锁 indexOf、substring 和 JSON.stringify:从小程序图片上传看字符串魔法 ✨

&#x1f31f; 解锁 indexOf、substring 和 JSON.stringify&#xff1a;从小程序图片上传看字符串魔法 ✨ 在 JavaScript 中&#xff0c;字符串操作和数据序列化是开发中不可或缺的技能。indexOf、substring 和 JSON.stringify 是三个简单却强大的工具&#xff0c;分别用于定位…

DeepSeek + 自由职业 发现新大陆,从 0 到 1 全流程跑通商业 IP

DeepSeek 自由职业 发现新大陆&#xff0c;从 0 到 1 全流程跑通商业 IP 商业定位1. 商业定位分析提示词2. 私域引流策略提示词3. 变现模型计算器提示词4. 对标账号分析提示词5. 商业IP人设打造提示词6. 内容选题策略提示词7. 用户人群链分析提示词8. 内容布局与转化路径设计提…

项目准备(flask+pyhon+MachineLearning)- 3

目录 1.商品信息 2. 商品销售预测 2.1 机器学习 2.2 预测功能 3. 模型评估 1.商品信息 app.route(/products) def products():"""商品分析页面"""data load_data()# 计算当前期间和上期间current_period data[data[成交时间] > data[成…

【MySQL】(2) 库的操作

SQL 关键字&#xff0c;大小写不敏感。 一、查询数据库 show databases; 注意加分号&#xff0c;才算一句结束。 二、创建数据库 {} 表示必选项&#xff0c;[] 表示可选项&#xff0c;| 表示任选其一。 示例&#xff1a;建议加上 if not exists 选项。 三、字符集编码和排序…

AndroidStudio下载旧版本方法

首先&#xff0c;打开Android Studio的官网&#xff1a;https://developer.android.com/studio。 然后&#xff0c;点击【Read release notes】。 然后需要将语言切换成英文&#xff0c;否则会刷不出来。 然后就可以看下各个历史版本了。 直接点链接好像也行&#xff1a;h…

(KTransformers) RTX4090单卡运行 DeepSeek-R1 671B

安装环境为&#xff1a;ubuntu 22.04 x86_64 下载模型 编辑文件vim url.list 写入如下内容 https://modelscope.cn/models/unsloth/DeepSeek-R1-GGUF/resolve/master/DeepSeek-R1-Q4_K_M/DeepSeek-R1-Q4_K_M-00001-of-00009.gguf https://modelscope.cn/models/unsloth/Dee…

C语言(3)—循环、数组、函数的详解

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言一、函数二、循环与数组 1.循环2.数组 总结 前言 提示&#xff1a;以下是本篇文章正文内容&#xff0c;下面案例可供参考 一、函数 在C语言中&#xff0c;函数…

利用 Python 爬虫进行跨境电商数据采集

1 引言2 代理IP的优势3 获取代理IP账号4 爬取实战案例---&#xff08;某电商网站爬取&#xff09;4.1 网站分析4.2 编写代码4.3 优化代码 5 总结 1 引言 在数字化时代&#xff0c;数据作为核心资源蕴含重要价值&#xff0c;网络爬虫成为企业洞察市场趋势、学术研究探索未知领域…

Minio搭建并在SpringBoot中使用完成用户头像的上传

Minio使用搭建并上传用户头像到服务器操作,学习笔记 Minio介绍 minio官网 MinIO是一个开源的分布式对象存储服务器&#xff0c;支持S3协议并且可以在多节点上实现数据的高可用和容错。它采用Go语言开发&#xff0c;拥有轻量级、高性能、易部署等特点&#xff0c;并且可以自由…

FPGA AXI-Stream协议详解与仿真实践

AXI-Stream协议详解与仿真实践 1 摘要 AXI-Stream总线是一种高效、简单的数据传输协议,主要用于高吞吐量的数据流传输场景。相比于传统的AXI总线,AXI-Stream总线更加简单和轻量级,它通过无需地址的方式,将数据从一个模块传输到另一个模块,适用于需要高速数据传输的应用场…

浙大 DeepSeek 线上课学习笔记

目录 DeepSeek&#xff1a;回望AI三大主义与加强通识教育 从达特茅斯启航的人工智能三大主义 人工智能三剑客之一&#xff1a;符号主义人工智能的逻辑推理 人工智能三剑客之二&#xff1a;连接主义人工智能的数据驱动 人工智能三剑客之三&#xff1a;行为主义人工智能的百…

【Python机器学习】1.2. 线性回归理论:一元线性回归、最小化平方误差和公式(SSE)、梯度下降法

喜欢的话别忘了点赞、收藏加关注哦&#xff08;关注即可查看全文&#xff09;&#xff0c;对接下来的教程有兴趣的可以关注专栏。谢谢喵&#xff01;(&#xff65;ω&#xff65;) 1.2.1. 什么是回归分析(Regressive Analysis)? 一些例子 举一些例子吧&#xff1a; 下图是…