首页 > 编程语言 >java GC Collector

java GC Collector

时间:2024-03-19 14:23:11浏览次数:26  
标签:java 收集器 XX GC 垃圾 ZGC Collector 内存

java 垃圾收集器

# 最小堆值,不设置默认为操作系统 1/64
-Xms4G
# 最大堆值,不设置默认为操作系统 1/4
-Xmx4G

G1

jdk9开始默认启用,显示启用 -XX:+UseG1GC

介绍

  1. 服务器级计算机上的垃圾优先 (G1) 收集器,否则为串行收集器。
  2. GC 线程的最大数量受堆大小和可用 CPU 资源的限制
  3. 初始堆大小为物理内存的 1/64
  4. 最大堆大小为物理内存的 1/4
  5. 分层编译器,同时使用 C1 和 C2

常用配置方式(单选)

最大暂停时间期望

-XX:MaxGCPauseMillis=<nnn>

-XX:MaxGCPauseMillis=12 表示期望垃圾收集器的STW时间小于等于 12 毫秒。垃圾收集器动态调整 Java 堆大小和与垃圾收集相关的其他参数,以尝试使垃圾收集暂停时间短于 12 毫秒。最大暂停时间目标的默认值因收集器而异。这些调整可能会导致垃圾收集更频繁地发生,从而降低应用程序的整体吞吐量。但在某些情况下,无法达到所需的暂停时间目标。

吞吐量期望

# 垃圾收集时间与应用程序时间的比率为 1/(1+nnn)
-XX:MaxGCPauseMillis=<nnn>

-XX:GCTimeRatio=19 表示期望垃圾收集总时间为应用程序运行时间的 1/20 。
垃圾收集所花费的时间是所有垃圾收集引起的暂停的总时间。如果未达到吞吐量目标,则垃圾收集器可能采取的操作之一是增加堆的大小,以便在收集暂停之间应用程序所花费的时间可以更长。

ZGC

介绍

高资源占用,低延时。支持范围为几百兆到16T的内存。是一种可扩展的低延迟垃圾收集器。ZGC 同时执行所有昂贵的工作,而不会停止应用程序线程的执行超过一毫秒。适合需要低延迟的应用。暂停时间与正在使用的堆大小无关。ZGC 可以很好地处理从几百兆字节到 16TB 的堆大小。

ZGC 被设计为自适应且需要最少的手动配置。在 Java 程序执行期间,ZGC 通过调整代大小、扩展 GC 线程数量以及调整保有阈值来动态适应工作负载。主要的调整旋钮是增加最大堆大小。

使用命令

# 使用非分代ZGC(最早版本不支持分代)
-XX:+UseZGC
# 使用分代ZGC(官方推荐)
-XX:+UseZGC -XX:+ZGenerational

常用基础配置

设值最大堆(最重要)

# 指定最大堆为8g
-Xmx8g
# 指定最大堆为5g,通常4g就开始GC,实在不行才会跑的5g,再不行就OOM
-Xmx5g -XX:SoftMaxHeapSize=4gZGC

禁用未用内存释放

默认情况下,ZGC会将不需要用的内存释放给操作系统。该功能对于外部程序都有意义,但是会对内部线程延长产生负面影响。

# 禁用未用内存释放
-XX:-ZUncommit
# 由于最大堆和最小堆大小一致,也不会释放未用内存给操作系统
-Xmx8g -Xms8g
# 未用内存返给操作系统延迟。默认 300 秒
-XX:ZUncommitDelay=<seconds>

标签:java,收集器,XX,GC,垃圾,ZGC,Collector,内存
From: https://www.cnblogs.com/listjiang/p/18082731

相关文章

  • Centos安装配置Java8
    查看Centos发行版本[root@lavm-ik3g4r3pga~]#cat/etc/redhat-releaseCentOSLinuxrelease7.9.2009(Core)查看java8安装包[root@lavm-ik3g4r3pga~]#yumlistjava-1.8*Loadedplugins:fastestmirrorRepositorybaseislistedmorethanonceintheconfiguration......
  • Java中使用easyexcel导入导出数据
    工作中常常遇到导入导出Excel数据,还需要设置表格边框、合并单元格、字体居中等等各种样式,尝试了多种方式觉得阿里的easyexcel挺好使,记录一下使用、表格样式如下:导入依赖<dependency><groupId>com.alibaba</groupId><artifactId>easyexcel</artifactId>......
  • Java基础知识总结(下)
    本文部分内容节选自JavaGuide,地址:https://javaguide.cn/java/basis/java-basic-questions-03.html......
  • 分月饼【华为OD机试JAVA&Python&C++&JS题解】
    一.题目-分月饼中秋节,公司分月饼,m个员工,买了n个月饼,m<=n,每个员工至少分1个月饼,但可以分多个,单人分到最多月饼的个数是Max1,单人分到第二多月饼个数是Max2,Max1-Max2<=3,单人分到第n-1多月饼个数是Max(n-1),单人分到第n多月饼个数是Max(n),Max(n-1)–Max(n)<=3,问有多少......
  • springboot+vue流浪动物宠物救助网站java-ssm
    系统包含两种角色:管理员、用户,系统分为前台和后台两大模块,主要功能如下。技术栈ide工具:IDEA或者eclipse编程语言:java数据库:mysql5.7+框架:springboot前端:vue.js+ElementUI详细技术:springboot+vue+MYSQL+MAVEN数据库工具:Navicat/SQLyog都可以前台:﹣动物领养/捐赠:......
  • springboot+vue中药知识科普网站java-ssm
    系统包含两种角色:管理员、用户,系统分为前台和后台两大模块,主要功能如下。技术栈ide工具:IDEA或者eclipse编程语言:java数据库:mysql5.7+框架:springboot前端:vue.js+ElementUI详细技术:springboot+vue+MYSQL+MAVEN数据库工具:Navicat/SQLyog都可以前台:﹣首页:展示网站......
  • java基于springboot的羽毛球馆场地预约管理系统ssm
    jdk版本:1.8及以上ide工具:IDEA或者eclipse数据库:mysql 编程语言:nodejs框架:springboot/springboot都有maven:3.6.1前端:layui+bootstrap+jsp详细技术:HTML+CSS+JS+jsp+springmvc+mybatis+MYSQL+MAVEN+tomcat羽毛球馆管理系统采用B/S架构,数据库是MySQL。网站的搭建......
  • java基于Spring boot+vue的小区物业报修缴费居民论坛交流系统ssm
    系统包含两种角色:管理员、用户,系统分为前台和后台两大模块,主要功能如下。技术栈ide工具:IDEA或者eclipse编程语言:java数据库:mysql5.7+框架:springboot前端:vue.js+ElementUI详细技术:springboot+vue+MYSQL+MAVEN数据库工具:Navicat/SQLyog都可以前台:1.首页:展示小区......
  • java社保费自助缴费系统(ssm框架毕业设计)
    本系统(程序+源码)带文档lw万字以上  文末可领取本课题的JAVA源码参考系统程序文件列表系统的选题背景和意义标题:社保费自助缴费系统的引入背景在信息技术飞速发展的今天,传统的社保费缴纳方式已逐渐不能满足人们的需求。以往,社会保险费的缴纳往往需要通过单位代扣代缴或亲......
  • java社会职业技能培训管理平台(ssm框架毕业设计)
    本系统(程序+源码)带文档lw万字以上  文末可领取本课题的JAVA源码参考系统程序文件列表系统的选题背景和意义标题:构建社会职业技能培训管理平台的必要性随着经济社会的快速发展和产业结构的不断升级,传统的职业培训模式已难以满足市场对高技能人才的迫切需求。企业对于专业......