垃圾收集算法,垃圾收集器

StackOverflow问题查找正在运行哪种类型的垃圾收集 器,jvm的默认垃圾收集器 , 如何通过查看gc日志来查看正在运行的垃圾收集器? ,以及如何知道HotSpot jvm的当前GC策略? 以及博客文章如何以编程方式获取GC信息表明了人们有时希望知道Java应用程序使用了哪个Java垃圾收集器。 在本文中,我将介绍确定与Oracle HotSpot VM中运行的Java应用程序相关联的垃圾收集器的一些最简单,最常见的方法。

出于演示目的,我将运行一个简单的Java应用程序。 该应用程序的代码对于演示如何确定适用的垃圾收集器并不重要。 可以使用命令java -cp stringInstantiationsDemo.jar dustin.examples.demo.IndefiniteRun运行简单的Java应用程序。 请注意,对于要使用的垃圾收集器,没有JVM标志的规范。 这意味着JVM将使用按人体工程学选择的垃圾收集器。

确定所选垃圾收集器的一种简单方法是使用-XX:+ PrintCommandLineFlags标志 (我在博客文章JavaOne 2011:HotSpot Performance命令行选项的权威集)中写道。 可以在命令java -XX:+PrintCommandLineFlags -cp stringInstantiationsDemo.jar dustin.examples.demo.IndefiniteRun使用此标志,如以下屏幕快照所示:

如最后一个屏幕快照所示,使用-XX:+PrintCommandLineFlags演示了-XX:+UseParallelGC标志的存在,该标志指示在这种情况下自动使用的收集器是并行收集器 (也称为吞吐量收集器)。

使用-XX:+PrintCommandLineFlags可以使我们看到在启动新的Java应用程序时按人体工程学选择的垃圾收集器运行良好。 当我们想看到已经在运行的Java进程使用的垃圾收集器时, jcmd会派上用场(我在jcmd文章中介绍了这个有用的工具:一个JDK命令行工具来统治他们 )。 在下一个屏幕快照中jcmd进行了说明,该屏幕快照演示了如何使用jcmd查看已经运行的Java应用程序的JVM命令行标志。

从上一个图像中,我们看到可以使用jcmd <pid> VM.flags标识将指示正在使用的垃圾收集器的虚拟机标志。 在这种情况下,我们再次看到-XX:+UseParallelGC的存在,指示并行/吞吐量垃圾收集器的使用。

我只是演示了如何使用jcmd查看隐式JVM参数,该参数告诉我们在未明确指定垃圾收集器时为特定应用程序的VM自动选择了哪个垃圾收集器。 下两个图像显示JConsole和VisualVM不显示隐式JVM参数,因此不显示未指定时自动使用的垃圾收集器。

尽管JConsole和VisualVM均未显示隐式Java虚拟机参数(例如隐式选择的垃圾收集器),但仍可以使用两种工具通过对象类型为java.lang:type=GarbageCollector JMX和GarbageCollectorMXBean来确定使用中的垃圾收集器。 对于本文到目前为止使用的简单应用程序,它将是java.lang:type=GarbageCollector,name=PS MarkSweep因为这是并行或吞吐量收集器。 接下来的两个屏幕快照中的JConsole和VisualVM (通过MBeans插件 )对此进行了演示。

以上示例演示了确定三种垃圾收集器适用的三种基本方法。 下表针对先前演示的并行/吞吐量收集器以及其他两个主要的Oracle HotSpot JVM收集器( CMS和G1 )总结了这些内容。 下表显示了确定上述一种方法(在命令行, jcmd或JMX MXBean上明确指定)使用哪个收集器(并行,CMS或G1)时要查找的内容。

垃圾收集器 明确的命令行 jcmd VM.flags java.lang:type = GarbageCollector,name =
并行 / 吞吐量 -XX:+UseParallelOldGC
-XX:+UseParallelGC
PS MarkSweep
PS清除
并发标记扫描(CMS) -XX:+UseConcMarkSweepGC 并发标记扫描
垃圾优先(G1) -XX:+ UseG1GC G1老一代
G1青年一代

尽管未在此处显示,但从VisualVM或JConsole确定正在使用哪个收集器的另一种方法是使用 DiagnosticCommandMBean 来查找 VM.flags ,其方式与 jcmd 提供VM标志的 方式相同, 如上所述。 在《 在JConsole和VisualVM中查看DiagnosticCommandMBean》 一文中,我已经写了使用 DiagnosticCommandMBean 完成 jcmd 行为的 博客 。

JVM通常会阻止提供两个不同的垃圾收集器标志。 如果在一次尝试启动Java应用程序的过程中存在两个,则将显示类似“选项列表中的收集器组合冲突”的消息,并且Java进程将不会启动。 因此,只需要为与正在运行的Java应用程序关联的特定收集器标识一个标志,即可知道正在使用哪个收集器。 这篇文章演示了多种简单的方法,可用于确定在给定应用程序的JVM中应用了哪个HotSpot垃圾收集器。

翻译自: https://www.javacodegeeks.com/2016/04/determining-active-hotspot-garbage-collector.html

垃圾收集算法,垃圾收集器

垃圾收集算法,垃圾收集器_确定活动的热点垃圾收集器相关推荐

  1. 垃圾收集算法,垃圾收集器_您正在使用什么垃圾收集器?

    垃圾收集算法,垃圾收集器 我们的研究实验室正全速前进. 随着最近的资本注入 ,我们只能保证我们不断创新的步伐只会加快. 我们进行的部分研究与GC优化有关. 在处理这个有趣的领域中的问题时,我们认为可以 ...

  2. 垃圾收集算法,垃圾收集器_为什么我不能关闭垃圾收集器?

    垃圾收集算法,垃圾收集器 让我们开始快速回顾一下我作为Java开发人员的职业生涯的早期. 我想消除正在进行的测试中的垃圾回收(GC)暂停. 瞧,当我发现无法完成时,我很生气. 那时,我把问题留在了&q ...

  3. epub 阅读器_全球与中国EPUB阅读器市场深度调研分析报告

    QYResearch预测:2020-2026全球与中国EPUB阅读器市场现状及未来发展趋势 [纸版价格]:RMB 18000 [电子版(PDF)价格]:RMB 18000 [报告篇幅]:103 [报告 ...

  4. 带倍速音频播放器_带有播放列表HTML5音频播放器

    带倍速音频播放器 HTML5 Audio player with playlist HTML5 audio player. Many of you faced with the task of cre ...

  5. mysql的事件探查器_用SQL Server事件探查器创建跟踪

    SQL Server事件探查器(Profiler)可以帮助数据库管理员跟踪SQL Server数据库所执行的特定事件,监视数据库的行为;并将这些有价值的信息保存到文件或表,以便以后用来分析解决数据库出 ...

  6. python编写装饰器_写python中的装饰器

    python中的装饰器主要用于在已有函数实现功能前附加需要输出的信息,下面将用实例展示我如何写装饰器. 首先分别尝试写装饰器装饰一个无参函数和一个有参函数(被装饰函数仅输出,无返回值情况下) 1 de ...

  7. 自定义音频播放器_创建自定义HTML5音频播放器

    自定义音频播放器 在本教程中,我将向您介绍HTML5音频,并向您展示如何创建自己的播放器. 如果您想走捷径,请查看Envato市场上可用的现成的HTML5音频播放器 . 它使您可以从各种来源创建播放列 ...

  8. 确定活动的热点垃圾收集器

    StackOverflow问题查找正在运行哪种类型的垃圾收集 器,jvm的默认垃圾收集器 , 如何通过查看gc日志来查看正在运行的垃圾收集器? ,以及如何知道HotSpot jvm的当前GC策略? 和 ...

  9. 使用什么优化器_新的深度学习优化器Ranger:RAdam + LookAhead强强结合

    [导读]给大家介绍一个新的深度学习优化器,Ranger,同时具备RAdam和LookAhead的优点,一行代码提升你的模型能力. Ranger 优化器结合了两个非常新的发展(RAdam + Looka ...

最新文章

  1. 某程序员炫耀:因长得太帅被女领导追求,三年就提拔到总监!程序员搞技术没用,健身护肤才是王道!...
  2. 基于深度学习的视觉三维重建研究总结
  3. python3 xrange *的作用
  4. JUC系列(二)回顾Synchronized关键字
  5. ise 时钟约束_「新手入门」ISE工程升级到Vivado及板级信号调试技术
  6. files函数提取文件名HTML,Javascript – 如何从文件input控件提取文件名
  7. 学Web前端要用哪些工具?学成后薪资如何?
  8. 流量运营数据产品最佳实践——美团旅行流量罗盘
  9. 作者:龚南宁,数据堂(北京)科技股份有限公司对外合作部副总监
  10. [流体输配管网] 使用 Matlab 绘制莫迪图
  11. leetcode 200 python
  12. 阿里战微信!20 亿元扶持小程序开发者
  13. Word2Vec 与 Word Embedding的关系
  14. 免费遥感图像数据共享网汇总
  15. go-micro服务报错:wsasend: An existing connection was forcibly closed by the remote host
  16. 战场管理系统的全球与中国市场2022-2028年:技术、参与者、趋势、市场规模及占有率研究报告
  17. 程序员做笔记的利器:MarkDown软件
  18. 2021年5月信息系统项目管理师真题基础知识1~32题
  19. java读取Excel内容添加到list集合里面去
  20. 完美国际2找回老账号服务器,我告诉大家一个找回账号的办法

热门文章

  1. CF718E Matvey‘s Birthday(状压、bfs、暴力、分类讨论)
  2. YBTOJ:灯光控制(贪心)(公倍数)(暴力枚举)
  3. CF346E-Doodle Jump【类欧】
  4. P4300-[AHOI2006]上学路线【网络流,最短路】
  5. jzoj4485-[GDOI 2016 Day1]第一题 中学生数学题【数学】
  6. 【SPFA】重建道路(jzoj 1212)
  7. Codeforces1142D
  8. 分布式之redis复习精讲
  9. Java 虚拟机对锁优化所做的努力
  10. 什么是Spring Boot?