当前位置: 首页 > news >正文

JVM运行时内存:垃圾回收器(Serial ParNew Parallel )详解

文章目录

  • 1. 查看默认GC
  • 2. Serial GC : 串行回收
  • 3. ParNew GC:并行回收
  • 4. Parallel GC:吞吐量优先


在这里插入图片描述

在这里插入图片描述


1. 查看默认GC

  • -XX:+PrintCommandLineFlags:查看命令行相关参数(包含使用的垃圾收集器)
  • 使用命令行指令:jinfo –flag 相关垃圾回收器参数 进程ID
    • jinfo -flag UseParallelGC 10098

2. Serial GC : 串行回收

概述

  • Serial收集器是最基本、历史最悠久的垃圾收集器了。JDK1.3之前回收新生代唯一的选择。
  • Serial收集器作为HotSpot中Client模式下的默认新生代垃圾收集器。
  • Serial 收集器 采用 复制算法、串行回收和”Stop-the-World”机制 的方式执行内存回收。
  • 除了年轻代之外,Serial收集器还提供用于执行老年代垃圾收集的Serial Old收集器。Serial Old 收集器同样也采用了串行回收和”Stop the World”机制,只不过内存回收算法使用的是标记-压缩算法。
    • Serial Old 是运行在 Client 模式下默认的老年代的垃圾回收器
    • Serial Old 在 Server 模式下主要有两个用途:① 与新生代的Parallel Scavenge配合使用 ② 作为老年代CMS收集器的后备垃圾收集方案

在这里插入图片描述

  • 这个收集器是一个单线程的收集器,但它的“单线程”的意义并不仅仅说明它只会使用一个 CPU 或一条收集线程去完成垃圾收集工作,更重要的是在它进行垃圾收集时,必须暂停其他所有的工作线程,直到它收集结束(Stop The World)。

优势:简单而高效(与其他收集器的单线程比),对于限定单个 CPU 的环境来说,Serial收集器由于没有线程交互的开销,专心做垃圾收集自然可以获得最高的单线程收集效率。
运行在Client模式下的虚拟机是个不错的选择。

在用户的桌面应用场景中,可用内存一般不大(几十MB至一两百MB),可以在较短时间内完成垃圾收集(几十ms至一百多ms),只要不频繁发生,使用串行回收器是可以接受的。

参数
在HotSpot虚拟机中,使用 -XX:+UseSerialGC 参数可以指定年轻代和老年代都使用串行收集器。
等价于 新生代用Serial GC,且老年代用Serial Old GC

小结

这种垃圾收集器大家了解,现在已经不用串行的了。而且在限定单核cpu才可以用。现在都不是单核的了。
对于交互较强的应用而言,这种垃圾收集器是不能接受的。一般在Java web应用程序中是不会采用串行垃圾收集器的。


3. ParNew GC:并行回收

概述

  • 如果说Serial GC是年轻代中的单线程垃圾收集器,那么ParNew收集器则是Serial收集器的多线程版本。

    • Par是Parallel的缩写,New:只能处理的是新生代
  • ParNew 收集器除了采用并行回收的方式执行内存回收外,两款垃圾收集器之间几乎没有任何区别。ParNew收集器在年轻代中同样也是采用复制算法、"Stop-the-World"机制。

  • ParNew 是很多JVM运行在Server模式下新生代的默认垃圾收集器。

在这里插入图片描述

  • 对于新生代,回收次数频繁,使用并行方式高效。
  • 对于老年代,回收次数少,使用串行方式节省资源。(CPU并行需要切换线程,串行可以省去切换线程的资源)

参数
在程序中,开发人员可以通过选项 -XX:+UseParNewGC 手动指定使用ParNew收集器执行内存回收任务。它表示年轻代使用并行收集器,不影响老年代。

-XX:ParallelGCThreads 限制线程数量,默认开启和 CPU 数据相同的线程数。


4. Parallel GC:吞吐量优先

概述

  • HotSpot的年轻代中除了拥有ParNew收集器是基于并行回收的以外,Parallel Scavenge收集器同样也采用了复制算法、并行回收和”Stop the World”机制

  • 那么Parallel收集器的出现是否多此一举?

    • 和ParNew收集器不同,Parallel Scavenge收集器的目标则是达到一个可控制的吞吐量(Throughput),它也被称为吞吐量优先的垃圾收集器。
    • 自适应调节策略也是Parallel Scavenge与ParNew一个重要区别。
  • 高吞吐量则可以高效率地利用 CPU 时间,尽快完成程序的运算任务,主要适合在后台运算而不需要太多交互的任务。因此,常见在服务器环境中使用。例如,那些执行批量处理、订单处理、工资支付、科学计算的应用程序。

  • Parallel 收集器在JDK1.6时提供了用于执行老年代垃圾收集的Parallel Old收集器,用来代替老年代的Serial Old收集器。

  • Parallel Old 收集器采用了标记-压缩算法,但同样也是基于并行回收和”Stop-the-World”机制。

在这里插入图片描述

  • 在程序吞吐量优先的应用场景中, Parallel 收集器和Parallel Old收集器的组合,在Server模式下的内存回收性能很不错。
  • 在Java8中,默认是此垃圾收集器。



在这里插入图片描述



相关文章:

JVM运行时内存:垃圾回收器(Serial ParNew Parallel )详解

文章目录 1. 查看默认GC2. Serial GC : 串行回收3. ParNew GC:并行回收4. Parallel GC:吞吐量优先 1. 查看默认GC -XX:PrintCommandLineFlags:查看命令行相关参数(包含使用的垃圾收集器)使用命令行指令:ji…...

The Missing Semester of Your CS Education(计算机教育中缺失的一课)

Shell 工具和脚本(Shell Tools and Scripting) 一、shell脚本 1.1、变量赋值 在bash中为变量赋值的语法是foobar,访问变量中存储的数值,其语法为 $foo。 需要注意的是,foo bar (使用空格隔开)是不能正确工作的&…...

如何为ChatGPT编写有效的提示词:软件开发者的指南

作为一名软件开发者,特别是使用Vue进行开发的开发者,与ChatGPT等AI助手高效互动,可以极大地提升你的开发效率。本文将深入探讨如何编写有效的提示词,以便从ChatGPT中获取有用的信息和帮助。 1. 明确目标 在编写提示词之前&#…...

angular插值语法与属性绑定

在 Angular 中&#xff0c;您提供的两种写法都是用来设置 HTML 元素的 title 属性&#xff0c;但它们的工作方式有所不同&#xff1a; 插值语法 (Interpolation) <h1 title"{{ name }}">我的名字</h1> 属性绑定 (Property Binding) <h1 [title]&q…...

Python ❀ 使用代码解决今天中午吃什么的重大生存问题

1. 环境安装 安装Python代码环境参考文档 2. 代码块 import random# 准备一下你想吃的东西 hot ["兰州拉面", "爆肚面", "黄焖鸡", "麻辣香锅", "米线", "麻食", "羊肉泡馍", "肚丝/羊血汤&qu…...

做抖音小店需要清楚的5个核心点!

大家好&#xff0c;我是喷火龙。 不管你是在做抖音小店&#xff0c;还是在做其他的电商平台&#xff0c;如果已经做了一段时间了&#xff0c;但还是没有拿到什么结果&#xff0c;我所指的结果不是什么大结果&#xff0c;而是连温饱都解决不了&#xff0c;甚至说还在亏钱。 有…...

文件流下载优化:由表单提交方式修改为Ajax请求

如果想直接看怎么写的可以跳转到 解决方法 节&#xff01; 需求描述 目前我们系统导出文件时&#xff0c;都是通过表单提交后&#xff0c;接收文件流自动下载。但由于在表单提交时没有相关调用前和调用后的回调函数&#xff0c;所以我们存在的问题&#xff0c;假如导出数据需…...

基础3 探索JAVA图形编程桌面:逻辑图形组件实现

在一个宽敞明亮的培训教室里&#xff0c;阳光透过窗户柔和地洒在地上&#xff0c;教室里摆放着整齐的桌椅。卧龙站在讲台上&#xff0c;面带微笑&#xff0c;手里拿着激光笔&#xff0c;他的眼神中充满了热情和期待。他的声音清晰而洪亮&#xff0c;传遍了整个教室&#xff1a;…...

前后端部署笔记

windows版&#xff1a; 如果傻呗公司让用win电脑部署&#xff0c;类似于我们使用笔记本做局域网服务器&#xff0c;社内使用。 1.安装win版的nginx、mysql、node、jdk等 2.nginx开机自启参考Nginx配置及开机自启动&#xff08;Windows环境&#xff09;_nginx开机自启动 wind…...

设计模式9——适配器模式

写文章的初心主要是用来帮助自己快速的回忆这个模式该怎么用&#xff0c;主要是下面的UML图可以起到大作用&#xff0c;在你学习过一遍以后可能会遗忘&#xff0c;忘记了不要紧&#xff0c;只要看一眼UML图就能想起来了。同时也请大家多多指教。 适配器模式&#xff08;Adapte…...

一文了解基于ITIL的运维管理体系框架

本文来自腾讯蓝鲸智云社区用户&#xff1a;CanWay ITIL&#xff08;Information Technology Infrastructure Library&#xff09;是全球最广泛使用的 IT 服务管理方法&#xff0c;旨在帮助组织充分利用其技术基础设施和云服务来实现增长和转型。优化IT运维&#xff0c;作为企业…...

Web前端开发技术-格式化文本 Web页面初步设计

目录 Web页面初步设计 标题字标记 基本语法&#xff1a; 语法说明&#xff1a; 添加空格与特殊符号 基本语法&#xff1a; 语法说明: 特殊字符对应的代码: 代码解释&#xff1a; 格式化文本标记 文本修饰标记 计算机输出标记 字体font标记 基本语法&#xff1a; 属…...

Windows下部署Seata1.5.2,解决Seata无法启动问题

目录 1. 版本说明 2. Windows下部署Seata1.5.2 2.1 创建回滚日志表undo_log 2.2 创建Seata服务端需要的四张表 2.3 在nacos创建seata命名空间&#xff0c;添加seataServer.yml配置 2.4 修改本地D:/tool/seata-server-1.5.2/seata/conf/applicaltion.yml文件 2.5 启动Seat…...

我加入了C++交流社区

最近&#xff0c;我决定加入了一个C交流社区&#xff0c;这是一个专注于C编程语言的在线平台。加入这个社区的初衷是为了提升我的编程技能&#xff0c;与其他对C感兴趣的人交流经验和知识。 加入这个社区后&#xff0c;我发现了许多有趣的讨论和资源。每天都有各种各样的话题&…...

Vue从入门到实战Day11

一、为什么要学Vue3 Vue3官网&#xff1a;简介 | Vue.js 1. Vue3的优势 2. Vue2选项式API vs Vue3组合式API 示例&#xff1a; 二、create-vue搭建Vue3项目 1. 认识create-vue create-vue是Vue官方新的脚手架工具&#xff0c;底层切换到了vite(下一代构建工具)&#xff0c;为…...

day15|各种遍历的应用

相关题目&#xff1a; 层次遍历会一打十 反转二叉树 对称二叉树 层次遍历会一打十 自底向上的层序遍历 实现思路&#xff1a;层次遍历二叉树&#xff0c;将遍历后的结果revers即可 public List<List<Integer>> levelOrderBottom(TreeNode root) {List<List&l…...

第12周作业--HLS入门

目录 一、HLS入门 二、HLS入门程序编程 创建项目 1、点击Vivado HLS 中的Create New Project 2、设置项目名 3、加入文件 4、仿真 3、综合 一、HLS入门 1. HLS是什么&#xff1f;与VHDL/Verilog编程技术有什么关系? HLS&#xff08;High-Level Synthesis&#xff0c…...

WorkManager使用技巧及各Android版本适配

WorkManager使用技巧及各Android版本适配 WorkManager是Android Jetpack中用于处理异步任务的库&#xff0c;它能够保证任务即使在应用关闭或设备重启后也能被执行。以下是WorkManager的使用技巧和代码示例&#xff0c;以及不同Android版本的适配方法。 1. 初始化WorkManager…...

鼠标滚轮使用时上下跳动的解决方法

前阵子鼠标滚轮使用时总会出现上下跳动比如向下滚动会往上反弹或者是在当前框架卡住但颤动的情况&#xff0c;这个问题困扰了我很久&#xff0c;试过了很多设置和驱动方面的办法都没解决&#xff0c;因此大概率是滚轮那有脏东西了。最后终于在一个答复下面看到了一种不用拆开修…...

CSS【常用CSS样式、盒子模型、定位、浮动 、扩展样式】--学习JavaEE的day46

day46 CSS 练习 页面实现&#xff1a; 分析&#xff1a; 未优化&#xff1a; 优化&#xff1a; 参考代码&#xff1a;&#xff08;包含样式优化–选择器CSS属性&#xff09; 先写上table方便实现&#xff0c;之后再去除即可 name没有服务器&#xff0c;可暂时不写 <!…...

南麟 SA9120 单通道 H 桥直流有刷电机驱动专用芯片 SOP8封装

产品描述南麟 SA9120 是上海南麟电子推出的单通道 H 桥直流有刷电机驱动专用芯片&#xff0c;采用成熟高压工艺设计&#xff0c;集成度高、外围电路简单&#xff0c;可直接驱动中小功率直流电机、步进电机绕组及电磁阀等感性负载&#xff0c;具备优异的抗干扰与带载能力&#x…...

DownKyi:3分钟学会B站视频下载的终极免费方案

DownKyi&#xff1a;3分钟学会B站视频下载的终极免费方案 【免费下载链接】downkyi 哔哩下载姬downkyi&#xff0c;哔哩哔哩网站视频下载工具&#xff0c;支持批量下载&#xff0c;支持8K、HDR、杜比视界&#xff0c;提供工具箱&#xff08;音视频提取、去水印等&#xff09;。…...

利用快马平台快速构建类FinalShell服务器监控Web原型

最近在折腾服务器监控工具&#xff0c;发现FinalShell确实好用&#xff0c;但有时候团队协作或者临时演示时&#xff0c;还是需要一个轻量级的Web版监控面板。正好发现了InsCode(快马)平台&#xff0c;用它快速搭建了一个原型&#xff0c;分享下实现思路。 整体架构设计 这个监…...

s2-pro部署案例:私有化部署保障语音数据不出域安全实践

s2-pro部署案例&#xff1a;私有化部署保障语音数据不出域安全实践 1. 项目背景与需求 在金融、医疗等行业中&#xff0c;语音数据往往涉及敏感信息&#xff0c;需要严格控制在内部网络中流转。某金融机构需要搭建内部语音合成系统&#xff0c;但面临以下核心需求&#xff1a…...

实战利器:基于快马平台为你的车辆检测项目定制专属labelimg标注工具

在AI项目开发中&#xff0c;数据标注往往是决定模型效果的关键环节。最近我在做一个车辆检测项目时&#xff0c;发现通用的标注工具无法满足特定需求&#xff0c;于是尝试用InsCode(快马)平台快速定制了一个专属的labelimg工具。整个过程比想象中顺利&#xff0c;分享几个实战要…...

3个时间序列数据增强策略让模型突破性能瓶颈:实战指南

3个时间序列数据增强策略让模型突破性能瓶颈&#xff1a;实战指南 【免费下载链接】Time-Series-Library A Library for Advanced Deep Time Series Models for General Time Series Analysis. 项目地址: https://gitcode.com/GitHub_Trending/ti/Time-Series-Library 在…...

4大维度全面掌控Cyber Engine Tweaks:打造专属赛博朋克2077体验

4大维度全面掌控Cyber Engine Tweaks&#xff1a;打造专属赛博朋克2077体验 【免费下载链接】CyberEngineTweaks Cyberpunk 2077 tweaks, hacks and scripting framework 项目地址: https://gitcode.com/gh_mirrors/cy/CyberEngineTweaks &#x1f31f; 引擎核心&#x…...

Go OAuth2授权码流程:实现Web应用用户认证的终极指南

Go OAuth2授权码流程&#xff1a;实现Web应用用户认证的终极指南 【免费下载链接】oauth2 Go OAuth2 项目地址: https://gitcode.com/gh_mirrors/oa/oauth2 Go OAuth2授权码流程是现代Web应用用户认证的完整解决方案&#xff0c;为开发者提供了安全、标准化的身份验证机…...

终极优化指南:NodeSource Node.js 二进制分发版的 Docker 镜像体积与启动速度革命

终极优化指南&#xff1a;NodeSource Node.js 二进制分发版的 Docker 镜像体积与启动速度革命 【免费下载链接】distributions NodeSource Node.js Binary Distributions 项目地址: https://gitcode.com/gh_mirrors/di/distributions NodeSource Node.js 二进制分发版为…...

Mod Loader:重新定义GTA系列模组管理的技术架构与实践指南

Mod Loader&#xff1a;重新定义GTA系列模组管理的技术架构与实践指南 【免费下载链接】modloader Mod Loader for GTA III, Vice City and San Andreas 项目地址: https://gitcode.com/gh_mirrors/mo/modloader 一、核心痛点解析&#xff1a;传统模组管理的三大技术瓶颈…...