通过微调JVM Garbage Collector减少Java IDE滞后

有没有想过为什么Eclipse / Netbeans会一直暂停一段时间? 特别是在您想向亲爱的同事展示代码中的内容时? 感觉很尴尬和尴尬,不是吗?

我发现大多数时间由于垃圾收集器的执行而导致IDE暂停。 JVM设计中的微妙元素很少起作用,通常可以使我们的开发人员摆脱内存消耗的困扰,并且大多数人都高兴地知道它能很好地完成工作,而在大多数情况下却忽略了它。 但是,如果我们只是忽略它,运行垃圾收集器的后果可能会让我们感到惊讶。

简而言之,当GC运行时,它将暂停应用程序的执行,直到完成释放内存为止。 对于Java绝对不是第一选择的实时系统,这肯定是不可接受的。 但是,即使在现代Java IDE确实是非关键的大型桌面应用程序中,GC也会使整个应用程序停止运行几秒钟。 这可能在一天中发生几次。 您可以想象,使用IDE之类的生产力工具,只会降低其“生产力”效果。

一种解决方案是进行一些调整:

  • 增加运行IDE的JVM的内存(请注意,这只会降低调用GC的频率,但会延长单个GC运行的执行时间–从较大的堆中收集垃圾需要更长的时间…)
  • 将默认的GC引擎切换为更并发的引擎,即使在完整GC的一切停止执行之前,它也会尝试连续收集垃圾

第一个选项是大多数Java程序员所熟知的-只需为MaxPermSize及其系列定义合理的值即可。

但是,第二种选择不是很为人所知。 关键是Oracle Java Hotspot JVM提供了几种可供选择的GC引擎。 而且,它们与默认值不同,即使在大型GC执行之间也可以提供连续的垃圾收集,这会减慢一切。

G1垃圾收集器

从Java 7更新4开始,Oracle 在JVM中提供了G1垃圾收集器 。

您可以使用以下命令行参数简单地启用它:

-XX:+UseG1GC

G1还有一个有趣的选择来限制GC处理的时间,因此限制了由于GC导致的暂停时间。

-XX:MaxGCPauseMillis=n

我建议将其设置为2000,因为使用IDE时通常可以接受2秒的暂停。 请注意,这只是G1收集器的一个软提示-如果GC周期需要更多时间,则不会尊重它,但是在大多数情况下,G1应该尊重它。

有关如何配置G1的更多信息,请参阅Java Hotspot VM G1选项 。

CMS垃圾收集器

在某些基准测试中 ,较旧的CMS收集器优于较新的G1收集器。

您可以使用以下选项来启用它而不是G1:

-XX:+UseConcMarkSweepGC

特殊的Eclipse调整

GC调整确实有助于提高Netbeans安装的性能。 但是,老实说,使用Eclipse IDE,GC调整只是优化性能的许多步骤之一,不幸的是,这只是次要的步骤。 有助于做更多事情的是配置方面的调整,例如关闭代码中的某些验证,减小控制台输出的大小。 就我而言,控制台输出冻结了Eclipse,以至于我需要将应用服务器的标准输出重定向到文件并完全绕过控制台:(

翻译自: https://www.javacodegeeks.com/2016/02/decrease-java-ide-lagging-fine-tuning-jvm-garbage-collector.html

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

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

相关文章

centos8部署nginx

Nginx 部署 1.创建 www用户, UID、GID 皆是 501,通过cat /etc/passwd,检查是否存在www用户 ~]# groupadd -g 501 www ~]# useradd -u 501 -g www www ~]# cat /etc/passwd 2.下载相应版本 ~]# wget http://nginx.org/download/nginx-1.16…

javascript-发布订阅模式

说明:本篇文章转载自小火柴的蓝色理想的一篇博文。原文地址:http://www.cnblogs.com/xiaohuochai/p/8031564.html 发布—订阅模式又叫观察者模式,它定义对象间的一对多的依赖关系,当一个对象的状态发生改变时,所有依赖…

centos8部署Django项目---后台运行

参考:https://www.cnblogs.com/yoyoketang/p/10220941.html 一、安装 pip install django创建项目 django-admin startproject mysite打开项目配置settings.py文件 cd mysite/mysitesettings.py文件( DEBUG TrueALLOWED_HOSTS [127.0.0.1, localh…

python-列表list和元组tuple

list Python内置的一种数据类型是列表:list。list是一种有序的集合,可以随时添加和删除其中的元素。 比如,列出班里所有同学的名字,就可以用一个list表示: >>> classmates [Michael, Bob, Tracy] >>&g…

jsf表单验证_动态表单,JSF世界期待已久

jsf表单验证新的PrimeFaces扩展版本0.5.0带来了新的DynaForm组件。 通常,如果知道行/列的数量,元素的位置等,则可以通过h:panelGrid或p:panelGrid构建非常简单的表单。 静态表单是正确的。 但是,如果在运行…

转载黑客是如何黑到你手机的?绝对涨姿势,一位黑客的Wi-Fi入侵实录!

声明:这是一虚构的故事,因此对图片均进行了模糊化处理。内容整理自网络! 故事的主人公小黑是一名从事IT相关工作的技术宅男。五一长假来临,宅在家中的他相当无聊,打开手机上的Wi-Fi模块,发现附近有将近10个…

linux安装pip

使用脚本安装和升级pip 要安装或升级pip,需要下载 get-pip.py. 地址:https://bootstrap.pypa.io/get-pip.py 然后运行以下命令 (需要管理员权限): $ wget https://bootstrap.pypa.io/get-pip.py $ python get-pip.py #查看pip版本 $ pip -V

我们如何意外地将Hibernate的JDBC流量增加了一倍

这篇文章描述了我最近使用Hibernate ORM的经验。 多年以来,该框架并没有让我感到惊讶,您可能会在使用它时遇到性能问题。 我以为我已经看完了,但是这次我又措手不及了。 该问题的基础是在对一个完全不相关的库进行故障排除时建立的&#xff…

html5——DOM扩展

元素获取 1、document.getElementsByClassName (class) 通过类名获取元素,以类数组形式存在。 2、document.querySelector(‘div’) 通过CSS选择器获取元素,符合匹配条件的第1个元素。 3、document.querySelectorAll(selector) 通过CSS选择器获取元素&am…

linux 系统安装mongodb数据库---方法1

参考:https://www.jianshu.com/p/994bc7b19b26 参考:https://blog.csdn.net/duan9015/article/details/106447942/ 1、制作 repo 文件 vim /etc/yum.repos.d/mongodb-org-4.2.repo[mongodb-org-4.2] nameMongoDB Repository baseurlhttps://repo.mongo…

JAVA递归实现全排列

全排列(permutation) 排列组合概念 排列,就是指从给定n个数的元素中取出指定m个数的元素,进行排序 组合,则是指从给定n个数的元素中仅仅取出指定m个数的元素,不考虑排序 全排列 以数字为例,全排…

centos8 linux部署node项目

1、域名解析到服务器 2、上传代码到项目目录 3、数据库: mongo use user user是数据库名 db.nfrc.insert({“name”:admin,“pawwsord”:“123456”}) nfrc集合名,相当于表名 db.nfrc.find() 数据行的id和项目中routes文件下index.js里面的id相一致 …

java云端部署_Jelastic Java云端平台

java云端部署谁在Jelastic背后? 那是我的第一个问题,因此我浏览了Jelastic网站。 回答此问题的最佳方法是查看“ Jelastic团队”部分。 创始人,顾问,特殊合作伙伴构成了一支真正的专业团队。 作为特殊的合作伙伴,您会…

注意点

1&#xff0c;流关闭&#xff0c;尽量不要在一个异常捕获里&#xff0c;那样一个关闭出现问题&#xff0c;下面的流不会再关闭。。。 2&#xff0c;ArrayList<String> list 可以加入null list.add(null);转载于:https://www.cnblogs.com/z2qfei/p/8056760.html

linux系统安装宝塔面板

yum install -y wget && wget -O install.sh http://download.bt.cn/install/install_6.0.sh && sh install.sh

Spring Bootstrap中带有配置元数据的高级配置

在简要介绍了配置元数据并涵盖了我之前的文章《 在Spring Boot中使用配置元数据Pimp您的配置》中的基础知识之后&#xff0c;是时候看看如何进一步执行此步骤并进一步自定义配置了。 在本文中&#xff0c;我计划提出对配置属性的弃用&#xff0c;并讨论各种值提供程序&#xff…

设计模式のStrategyPattern(策略模式)----行为模式

一、问题产生背景 当我们进行一系列处理时&#xff08;员工工资核算&#xff0c;会员管理&#xff0c;计算器&#xff0c;优惠活动&#xff09;&#xff0c;会有很多相似的算法和处理过程&#xff0c;只是由于具体的算法的差异&#xff0c;导致必须不同处理。这些处理和客户端无…

linux安装虚拟环境virtualenv

&#xff08;安装虚拟环境&#xff0c;不然会和其他环境冲突&#xff09; https://blog.csdn.net/wtwcsdn123/article/details/88653179 https://blog.csdn.net/u011798443/article/details/80881931&#xff08;超详细&#xff09; pip install virtualenv 创建python3环境 …

windows系统服务器添加ssl证书

一、为域名申请证书 浏览器打开后系在对应版本&#xff1a; https://keymanager.org/ 注册账号&#xff1a; https://freessl.cn/ 安装刚刚下载的软件&#xff1b; 登录进去就可以申请域名的证书了 二、域名解析 解析完后倒回软件那点击“配置完成&#xff0c;检查一下” …

使用ANTLR在5分钟内用Java解析任何语言:例如Python

我喜欢出于多种目的处理代码&#xff0c;例如静态分析或自动重构。 对我来说&#xff0c;有趣的部分是推理从抽象语法树&#xff08;AST&#xff09;构建的模型。 为此&#xff0c;您需要一种从源文件中获取AST的方法。 使用ANTLR和完整的语法集合可在此处轻松完成&#xff1a;…