`

jmv第四节-垃圾回收器详细讲解

 
阅读更多

这篇文章我想和大家分享一下现在java的垃圾回收器

1.串行回收器 -XX:+UseSerialGC

使用一个线程进行串行回收,新生代采用复制算法,老年代使用标记-压缩算法,回收的时候程序全部暂停

缺点是:停顿时间长

有点是:久经考验,bug少



 

 

2.ParNew  -XX:+UseParNewGC 新生代并行,老年代串行

回收的时候程序全部暂停


3.Parallel收集器

类似ParNew,更加关注吞吐量

-XX:+UseParallelGC 使用Parallel收集器+老年代串行

-XX:+UseParallelOldGC 使用Parallel+老年代并行

回收的时候程序全部暂停

-XX:MaxGCPauseMills

最大停顿时间,单位毫秒

GC尽力保证回收时间不超过设定值

-XX:GCTimeRatio

0-100的取值范围

垃圾收集时间占总时间的比

默认99,即最大允许1%时间做GC

数是矛盾的。因为停顿时间和吞吐量不可能同时调优



 4.CMS收集器 -XX:+UseConcMarkSweepGC

Concurrent Mark Sweep 并发标记清除算法

和应用程序一起执行,并发阶段会降低吞吐量

这个是老年代收集器,新生代采用ParNew

 

CMS运行过程比较复杂,着重实现了标记的过程,可分为

 

初始标记

根可以直接关联到的对象,速度快,这个标记全局停顿。

并发标记(和用户线程一起)

主要标记过程,标记全部对象

重新标记

由于并发标记时,用户线程依然运行,因此在正式清理前,再做修正,重新标记也产生全局停顿

并发清除

(和用户线程一起)

基于标记结果,直接清理对象

主要标记是并发执行的,初始标记和重新标记比较少量的工作是要全局停顿的,时间短。

特点

尽可能降低停顿

会影响系统整体吞吐量和性能

比如,在用户线程运行过程中,分一半CPU去做GC,系统性能在GC阶段,反应速度就下降一半

清理不彻底因为在清理阶段,用户线程还在运行,会产生新的垃圾,无法清理因为和用户线程一起运行,不能在空间快满时再清理

-XX:CMSInitiatingOccupancyFraction设置触发GC的阈值如果不幸内存预留空间不够,就会引起

concurrent mode failure

CMS回收失败,串行回收器就会变成他的他的后备回收器,几次FullGC后,,进行一次碎片的整理,整理过

程是独占的,会引起停顿

-XX:+ UseCMSCompactAtFullCollection Full GC后,进行一次整理整理过程是独占的,会引起停顿时间变长

-XX:+CMSFullGCsBeforeCompaction 设置进行几次Full GC后,进行一次碎片整理:

-XX:ParallelCMSThreads设定CMS的线程数量



 5.G1垃圾回收器

 

Garbage-First

在JDK 1.7正式引入

关注停顿时间

 

参数

-XX:+UseG1GC

-XX:MaxGCPauseMillis

-XX:ParallelGCThreads

 

G1垃圾回收器的特点

新生代GC

并发标记周期

混合收集,新生代和老年代一起回收

如果需要,可能会进行Full GC

 

G1的新生代回收


 

G1初始标记, G1初始标记是会进行新生代垃圾回收的

G1混合回收,G1在并发标记后会进行新生代和老年代的混合垃圾回收


 

 

GC参数整理

-XX:+UseSerialGC:在新生代和老年代使用串行收集器

-XX:SurvivorRatio:设置eden区大小和survivior区大小的比例

-XX:NewRatio:新生代和老年代的比

-XX:+UseParNewGC:在新生代使用并行收集器

-XX:+UseParallelGC :新生代使用并行回收收集器

-XX:+UseParallelOldGC:老年代使用并行回收收集器

-XX:ParallelGCThreads:设置用于垃圾回收的线程数

-XX:+UseConcMarkSweepGC:新生代使用并行收集器,老年代使用CMS+串行收集器

-XX:ParallelCMSThreads:设定CMS的线程数量

-XX:CMSInitiatingOccupancyFraction:设置CMS收集器在老年代空间被使用多少后触发

-XX:+UseCMSCompactAtFullCollection:设置CMS收集器在完成垃圾收集后是否要进行一次内存碎片的整理

-XX:CMSFullGCsBeforeCompaction:设定进行多少次CMS垃圾回收后,进行一次内存压缩

-XX:+CMSClassUnloadingEnabled:允许对类元数据进行回收

-XX:CMSInitiatingPermOccupancyFraction:当永久区占用率达到这一百分比时,启动CMS回收

-XX:UseCMSInitiatingOccupancyOnly:表示只在到达阀值的时候,才进行CMS回收

 

  • 大小: 19 KB
  • 大小: 27.4 KB
  • 大小: 30.2 KB
  • 大小: 37.9 KB
  • 大小: 17.2 KB
  • 大小: 15.9 KB
  • 大小: 15 KB
  • 大小: 15 KB
分享到:
评论

相关推荐

    JMV Screen Capturing-crx插件

    该插件的独特之处在于其编码器网络没有任何控制权,这意味着用户的屏幕捕获数据完全由用户自己掌控,不需担心隐私泄露或数据被第三方操纵的风险。这为用户提供了更加安全的屏幕分享体验,尤其对于处理敏感信息或商业...

    jmv:R的jamovi

    MV 该模块代表jamovi随附的分析。 它包含许多常见的统计检验(例如t检验,ANOVA,相关矩阵,比例检验,列联表等)。... jmv可以通过以下方式安装: install.packages('jmv')jmv文档可以在jamovi网站上找到:

    Mirillis Action! 1.3.0.0破解版(屏幕录像软件)

    4、内置“游戏录制、活动桌面、自定义区域”录制模式功能,使用便捷! 5、支持NVIDIA CUDA™ 和 Intel Quick Sync Video technologies硬件加速功能! 6、支持屏幕戴、游戏截图自动保存,不会打断正在运行的游戏及...

    maven3.6.1

    4. **构建速度**:Maven3.6.1的发布通常会包含性能提升,这意味着构建时间可能缩短,对于大型项目尤其有利。这可能是通过优化内部算法、减少不必要的网络请求等方式实现的。 5. **错误处理和日志记录**:Maven的...

    JVM Diagnostics Guide 1.4.2

    JVM Diagnostics Guide 1.4.2 JVM Diagnostics Guide 1.4.2 JVM Diagnostics Guide 1.4.2 JVM Diagnostics Guide 1.4.2 JVM Diagnostics Guide 1.4.2

    图片压缩器-jpg压缩-PDF压缩,包含源代码

    标题中的“图片压缩器-jpg压缩-PDF压缩,包含源代码”揭示了这是一个关于使用Python进行图片(特别是JPG格式)和PDF文件压缩的项目,其中包含了实现这一功能的源代码。这个工具可能是为了帮助用户减小文件体积,以...

    jmc8.0.0-win32.win32.x86_64.zip

    4. **方法引用和构造器引用**:简化了调用已存在方法和构造器的过程。 5. **Nashorn JavaScript引擎**:使得Java代码可以直接与JavaScript交互,增强了脚本语言的支持。 6. **日期和时间API的改进**:提供了新的java...

    一篇文章让你了解chaosblade-niaoshuai1

    在本文中,我们将探讨如何使用 ChaosBlade 创建和管理 JMV 相关的故障模拟实验。 首先,你需要从 ChaosBlade 的官方仓库(https://github.com/chaosblade-io/chaosblade-exec-jvm/tree/v0.1.0)获取并解压对应版本...

    Packt.MySQL.for.Python

    - **连接库选择**:了解并掌握用于Python的MySQL连接器(如mysql-connector-python或pymysql)的基本用法。 - **数据库交互**:学习如何通过Python脚本创建、读取、更新和删除MySQL数据库中的数据。 **知识点2:...

    ConsoleJMXMonitor

    控制台JMX监视器 极简控制台应用程序,通过 JMX 显示堆和线程。 带PID的本地JMV 带有 url 的远程 JVM 选项 : -Djmx.service.host=localhost -Djmx.service.port=9990 -djmx.service.url=service:jmx:remote+...

    最新版JamVM 1.5.2

    JamVM is a new Java Virtual Machine which conforms to the JVM specification version 2 (blue book). In comparison to most other VMs (free and commercial) it is extremely small, with a stripped ...

    行业调查-中国铜包线市场现状及未来发展趋势.doc

    铜包线市场的主要生产商包括国际和本土企业,如Sandvik AB、The Elektrisola Group、Fujikura、Kris-Tech Wire、JMV LPS Limited、General Clad、CopperClad、PVS N.V.、Shibata、Copperhead Industries、LEONI ...

    武汉工程大学物理练习册答案1

    以上是对题目中涉及的物理知识点的详细解释,包括平面运动的各种类型、速度和加速度的计算、动量和冲量的概念、力做功的计算以及能量转换等。这些内容涵盖了大学物理的基本知识,是理解和解决实际问题的基础。

    超级解霸播放软件

    强大的解压VCD/DVD播放器,支持RM/RMVB/MOV/SWF/MP3/WMA等目前Windows流行的音视频格式的播放。...JMV视频加密技术,实现视频文件的密码加密,预览等多种应用。----骨灰级的,,1990-2002年开始上网的朋友的怀旧

    字节码实战包含class,字节码.zip

    JMV负责解析和执行字节码,它通过类加载器动态加载类文件,并对其进行校验,确保安全。然后,JVM的解释器将字节码转化为机器可执行的指令,或者在支持即时编译(JIT,Just-In-Time Compilation)的JVM中,部分频繁...

    Eclipse配置dubbo.xsd,解决标签不识别的问题

    本文将详细介绍如何通过配置dubbo.xsd文件来解决这一问题。 #### 一、Dubbo简介 Dubbo是一款高性能、轻量级的开源服务框架,它提供了全面的服务治理能力,包括服务注册与发现、负载均衡、容错机制等功能,适用于...

    Android-App-Download-Image-from-the-url:Android应用程序可从URL下载图像

    然后,你可以创建一个RequestQueue实例,并使用ImageView的占位符和加载器来显示下载的图像。 ```java RequestQueue queue = Volley.newRequestQueue(this); String url = "http://example.com/image.jpg"; ...

    JAVA2深度历险.

    理解JVM内存模型,包括堆、栈、方法区等,以及垃圾收集机制,能够帮助我们优化程序性能,避免内存泄漏。此外,JVM的类加载机制、字节码执行过程以及JVM调优都是进阶开发者必须掌握的知识点。 书中可能还会涵盖JVM的...

    JVM调优.pptx

    JVM调优分享,简单的一些分享,希望能帮助大家。凑字数真的烦!!!

Global site tag (gtag.js) - Google Analytics