您需要了解的所有有关System.gc()的信息

在本文中,我们试图回答有关System.gc()API调用的最常见问题。 我们希望它会有所帮助。

什么是System.gc()?

System.gc()是用Java,Android,C#和其他流行语言提供的API。 当被调用时,它将尽最大努力从内存中清除累积的未引用对象(即垃圾)。

谁调用System.gc()?

可以从应用程序堆栈的各个部分调用System.gc()调用:

  • 您自己的应用程序开发人员可能正在显式调用System.gc()方法。
  • 有时System.gc()可以由您的第三方库,框架甚至有时由应用程序服务器触发。
  • 可以通过使用JMX从外部工具(如VisualVM)触发
  • 如果您的应用程序正在使用RMI,则RMI会定期调用System.gc()。

调用System.gc()有什么弊端?

当从您的应用程序调用System.gc()或Runtime.getRuntime()。gc()API调用时,世界各地的Full GC事件将被触发。 在世界各地的完整GC期间,整个JVM将冻结(即,正在运行的所有客户交易将被暂停)。 通常,这些完整GC需要很长时间才能完成。 因此,在不需要运行GC的不必要时间,它有可能导致不良的用户体验和SLA。

JVM具有复杂的算法,该算法始终在后台运行,进行所有计算以及有关何时触发GC的计算。 当您调用System.gc()调用时,所有这些计算都将被抛掉。 如果JVM仅在一毫秒后触发了GC事件,然后又从应用程序中再次调用System.gc(),该怎么办? 因为从您的应用程序中您不知道GC何时运行。

是否有任何良好/有效的理由来调用System.gc()?

从应用程序调用System.gc()的原因很多,我们还没有遇到。 但是,这是我们在一家大型航空公司的应用程序中看到的有趣的用例。 该应用程序使用1 TB的内存。 此应用程序的完整GC暂停时间大约需要5分钟才能完成。 是的,不要感到震惊,这是5分钟🙂(但我们也看到了23分钟的GC暂停时间的情况)。 为了避免由于此暂停时间而对客户造成的影响,该航空公司已实施了明智的解决方案。 每天晚上,他们一次从负载均衡器池中取出一个JVM实例。 然后,它们通过该JVM上的JMX显式触发System.gc()调用。 一旦GC事件完成并且从内存中清除了垃圾,他们就会将该JVM放回到负载平衡器池中。 通过这种巧妙的解决方案,他们将这5分钟的GC暂停时间对客户的影响降至最低。

如何检测是否从您的应用程序进行了System.gc()调用?

如您在“谁调用System.gc()?”中所注意到的那样。 部分,您可以看到System.gc()调用将从多个源进行,而不仅仅是从您的应用程序源代码进行。 因此,仅搜索应用程序代码'System.gc()'字符串不足以判断您的应用程序是否在进行System.gc()调用。 因此,这构成了一个挑战:如何检测是否在整个应用程序堆栈中调用了System.gc()调用?

这是GC日志很方便的地方。 在应用程序中启用GC日志 。 实际上,建议始终在所有生产服务器中始终启用GC日志,因为它有助于您排除故障并优化应用程序性能。 启用GC日志会增加微不足道的开销(如果可以观察到的话)。 现在,将您的GC日志上传到垃圾收集日志分析器工具。

上图摘自GCeasy生成的报告的“ GC Causes”部分。 您可以看到“ System.gc()”调用被调用304次,占GC暂停时间的52.42%。

如何删除System.gc()调用?

您可以通过以下解决方案删除显式的System.gc()调用:

一个。 搜索和替换

这可能是一种传统方法:-),但是可以。 在应用程序代码库中搜索“ System.gc()”和“ Runtime.getRuntime()。gc()”。 如果看到匹配项,则将其删除。 如果从您的应用程序源代码中调用“ System.gc()”,则此解决方案将起作用。 如果“ System.gc()”要从您的第三方库,框架或通过外部源进行调用,则此解决方案将不起作用。 在这种情况下,您可以考虑使用#b中概述的选项。

b。 -XX:+ DisableExplicitGC

启动应用程序时,可以通过传递JVM参数'-XX:+ DisableExplicitGC'来强制禁用System.gc()调用。 此选项将使在应用程序堆栈中任何位置调用的所有“ System.gc()”调用静音。

C。 RMI

如果您的应用程序使用RMI,则可以控制“ System.gc()”调用的频率。 启动应用程序时,可以使用以下JVM参数配置该频率:

-Dsun.rmi.dgc.server.gcInterval = n

-Dsun.rmi.dgc.client.gcInterval = n

这些属性的默认值在

JDK 1.4.2和5.0是60000毫秒(即60秒)

JDK 6和更高版本是3600000毫秒(即60分钟)

您可能需要将这些属性设置为很高的值,以便可以将影响最小化。

翻译自: https://www.javacodegeeks.com/2019/09/all-you-need-to-know-about-system-gc.html

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

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

相关文章

单E1光端机,V.35光端机,以太网光端机介绍及技术指标详解

光猫也称为单端口光端机,是针对特殊用户环境而设计的产品,它利用一对光纤进行单E1或单V.35或单10BaseT点到点式的光传输终端设备。光猫有E1光猫,以太网光猫,V35光端机等,那么,什么是单E1光端机,…

[渝粤教育] 兰州交通大学 信号处理基础[310106224] 参考 资料

教育 -信号处理基础[310106224]-章节资料考试资料-兰州交通大学【】 第一章单元测验 1、【单选题】具有一个独立变量的信号函数称为( )。 A、多维信号。 B、一维信号。 C、二维信号。 D、三维信号。 参考资料【 】 2、【单选题】 根据信号是否重复出现的…

光端机是做什么的?光端机的作用主要有哪些?

光端机,相信不了解通信这一行业的朋友肯定会觉得很陌生,但是它在我们的实际生活领域应用非常广泛,简单来说,光端机就是一种信号传输设备。由于很多朋友缺乏对光端机这一块的了解和认知,很多人对于什么是光端机以及光端…

什么是光端机?

今天杭州飞畅科技的小编带大家来了解下什么是光端机,想要搞懂这个问题,首先咱们得从光端机的概念来讲起。 光端机的定义: 光端机是光通信系统中的传输设备,主要是进行光电转换及传输功用。一般用于电信、电力、监控、工业控制、视…

[渝粤教育] 内蒙古师范大学 数字逻辑电路 参考 资料

-数字逻辑电路-章节资料考试资料-内蒙古师范大学【】 数制 1、【填空题】<img src"http://edu-image.nosdn.127.net/CD49441B968A6557775A0711DD560A6C.jpg?imageView A、 参考资料【 】 2、【填空题】 A、 参考资料【 】 3、【填空题】 A、 参考资料【 】 码制 1、【…

什么是数字光端机?数字光端机使用注意事项详解!

数字光端机是一种通过数字电路控制光信号&#xff0c;使用类似于0、1代码来实现光通信的机器。广泛应用于光纤通信等领域。由于数字光端机具有传输信号质量高&#xff0c;没有模拟调频、调相、调幅光端机多路信号同传时交调干扰严重、容易受环境干扰影响、传输质量低劣、长期工…

jdk8 接口抽象类区别_JDK 8时代的抽象类与接口

jdk8 接口抽象类区别在新的Java 8日期和时间API&#xff1a;Stephen Colebourne的访谈中 &#xff0c; Stephen Colebourne告诉Hartmut Schlosser &#xff1a;“我认为最重要的语言更改不是lambda&#xff0c;而是接口上的静态和默认方法。” Colebourne补充说&#xff1a;“添…

[渝粤教育] 兴义民族师范学院 数据结构 参考 资料

形&#xff09;&#xff0c;另两个投影面积聚为&#xff08; &#xff09;。A、 直线B、 曲线C、 点D、 平面参考答案&#xff1a;A 教育 -数据结构-章节资料考试资料-兴义民族师范学院【】 小测验&#xff1a;算法复杂度 1、【单选题】下列函数中&#xff0c;哪个函数具有最快…

什么是高清DVI光端机?dvi光端机的技术参数及应用有哪些?

DVI光端机是由DVI发送器&#xff08;DVI-T&#xff09;和DVI接收器&#xff08;DVI-R&#xff09;组成&#xff0c;通过一芯单模光纤传输DVI、VGA、Audip、RS232信号。那么&#xff0c;什么是高清DVI光端机呢&#xff1f;DVI光端机的应用范围及技术参数有哪些呢&#xff1f;接下…

视频光端机常见故障问题及处理方法大全

在安防监控工程中&#xff0c;需要应用到很多的视频光端机&#xff0c;但是我们在使用视频光端机的过程中&#xff0c;往往不可避免的会出现一些故障问题&#xff0c;那针对这些故障问题我们该如何检测以及处理呢&#xff1f;今天&#xff0c;飞畅科技的小编为大家专门整理了几…

视频光端机常见问题解决方法

目前&#xff0c;高清化可以说是安防监控行业的一个发展趋势&#xff0c;视频光端机作为传输介质的终端设备&#xff0c;在整个传输过程中显得尤为重要&#xff0c;但是我们在使用视频光端机的过程中&#xff0c;往往也会遇到图像失真&#xff0c;图像跳动&#xff0c;图像质量…

什么是视频光端机

现如今&#xff0c;随着用户对安防要求的不断提高&#xff0c;视频监控光端机在安防领域应用的越来越广泛了&#xff0c;在安防工程项目中&#xff0c;视频光端机可以说是一个不可缺少的设备&#xff0c;在其中发挥着非常重要的作用。那么&#xff0c;什么是视频光端机呢&#…

-javaagent:_从javaagent迁移到JVMTI:我们的经验

-javaagent:当您需要从JVM内收集数据时&#xff0c;您会发现自己很危险地接近Java虚拟机内部进行工作。 幸运的是&#xff0c;有一些方法可以避免被JVM实现细节所困扰。 Java之父不仅给您提供了两个漂亮的工具供您使用。 在这篇文章中&#xff0c;我们将解释两种方法之间的差异…

视频光端机使用、保养与维护方法详解

现如今&#xff0c;在安防监控工程项目中&#xff0c;视频通信已得到了广泛的应用&#xff0c;在这其中视频光端机可以说是发挥着很重要的作用&#xff0c;视频光端机正越来越广泛的应用到安防工程项目中。那么&#xff0c;我们在工程项目中该如何使用、保养与维护视频光端机呢…

关于视频光端机调制方式及介质特点的介绍

光端机的工作原理就是把信号调制到光上&#xff0c;再然后通过光纤来进行视频数据传输&#xff0c;那么&#xff0c;视频光端机在传输的过程当中有哪些调制方式呢&#xff1f;光纤传输的介质有哪些特点呢&#xff1f;接下来我们就跟随飞畅科技的小编一起来详细了解下吧&#xf…

[渝粤教育] 四川师范大学 复变函数与积分变换 参考 资料

教育 -复变函数与积分变换-章节资料考试资料-四川师范大学【】 第一章单元作业题 第一章单元测验题 1、【单选题】 A、 B、 C、 D、 参考资料【 】 2、【单选题】 A、 B、 C、 D、 参考资料【 】 3、【单选题】 A、 B、 C、 D、 参考资料【 】 4、【单选题】 A、 B、 C、 D…

视频光端机园区出入口监控项目应用方案详解

现如今&#xff0c;随着时代的发展&#xff0c;以及用户对安全防范要求的日益提高&#xff0c;监控视频光端机在安防领域得到越来越广泛的运用&#xff0c;而且监控光端机的技术也越来越成熟&#xff0c;所以视频监控在安防监控领域可以说发挥着很重要的作用。接下来我们就来详…

activemq 内存_ActiveMQ中的温度,存储和内存使用百分比

activemq 内存为了有效使用ActiveMQ&#xff0c;了解ActiveMQ如何管理内存和磁盘资源以处理非持久性消息和持久性消息非常重要。 ActiveMQ具有三个关键参数&#xff0c;需要对其进行检查。 临时使用百分比 这是已用于假脱机非持久消息的已分配磁盘存储的百分比 非持久性消息…

视频光端机选型及常见品牌

从发送到光纤上的信号来分&#xff0c;视频光端机可分为基于模拟技术的模拟光端机和基于数字技术的数字光端机&#xff0c;模拟光端机其工作原理不外乎调制解调、滤波和信号混合等。不论是LED还是LD&#xff0c;其光电调制特性都不是线性的&#xff0c;在信号传输过程中难免出现…

视频光端机音频出现噪音是为何?

视频光端机可以说是在安防监控领域中应用非常的广泛了&#xff0c;但是&#xff0c;当我们在使用视频光端机的时候&#xff0c;有时候会遇到音频出现噪音的故障&#xff0c;那么这是何种原因导致的呢&#xff1f;接下来我们就跟随飞畅科技的小编一起来详细了解下吧&#xff01;…