垃圾收集算法,垃圾收集器_确定活动的热点垃圾收集器
垃圾收集算法,垃圾收集器
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
垃圾收集算法,垃圾收集器
垃圾收集算法,垃圾收集器_确定活动的热点垃圾收集器相关推荐
- 垃圾收集算法,垃圾收集器_您正在使用什么垃圾收集器?
垃圾收集算法,垃圾收集器 我们的研究实验室正全速前进. 随着最近的资本注入 ,我们只能保证我们不断创新的步伐只会加快. 我们进行的部分研究与GC优化有关. 在处理这个有趣的领域中的问题时,我们认为可以 ...
- 垃圾收集算法,垃圾收集器_为什么我不能关闭垃圾收集器?
垃圾收集算法,垃圾收集器 让我们开始快速回顾一下我作为Java开发人员的职业生涯的早期. 我想消除正在进行的测试中的垃圾回收(GC)暂停. 瞧,当我发现无法完成时,我很生气. 那时,我把问题留在了&q ...
- epub 阅读器_全球与中国EPUB阅读器市场深度调研分析报告
QYResearch预测:2020-2026全球与中国EPUB阅读器市场现状及未来发展趋势 [纸版价格]:RMB 18000 [电子版(PDF)价格]:RMB 18000 [报告篇幅]:103 [报告 ...
- 带倍速音频播放器_带有播放列表HTML5音频播放器
带倍速音频播放器 HTML5 Audio player with playlist HTML5 audio player. Many of you faced with the task of cre ...
- mysql的事件探查器_用SQL Server事件探查器创建跟踪
SQL Server事件探查器(Profiler)可以帮助数据库管理员跟踪SQL Server数据库所执行的特定事件,监视数据库的行为;并将这些有价值的信息保存到文件或表,以便以后用来分析解决数据库出 ...
- python编写装饰器_写python中的装饰器
python中的装饰器主要用于在已有函数实现功能前附加需要输出的信息,下面将用实例展示我如何写装饰器. 首先分别尝试写装饰器装饰一个无参函数和一个有参函数(被装饰函数仅输出,无返回值情况下) 1 de ...
- 自定义音频播放器_创建自定义HTML5音频播放器
自定义音频播放器 在本教程中,我将向您介绍HTML5音频,并向您展示如何创建自己的播放器. 如果您想走捷径,请查看Envato市场上可用的现成的HTML5音频播放器 . 它使您可以从各种来源创建播放列 ...
- 确定活动的热点垃圾收集器
StackOverflow问题查找正在运行哪种类型的垃圾收集 器,jvm的默认垃圾收集器 , 如何通过查看gc日志来查看正在运行的垃圾收集器? ,以及如何知道HotSpot jvm的当前GC策略? 和 ...
- 使用什么优化器_新的深度学习优化器Ranger:RAdam + LookAhead强强结合
[导读]给大家介绍一个新的深度学习优化器,Ranger,同时具备RAdam和LookAhead的优点,一行代码提升你的模型能力. Ranger 优化器结合了两个非常新的发展(RAdam + Looka ...
最新文章
- 某程序员炫耀:因长得太帅被女领导追求,三年就提拔到总监!程序员搞技术没用,健身护肤才是王道!...
- 基于深度学习的视觉三维重建研究总结
- python3 xrange *的作用
- JUC系列(二)回顾Synchronized关键字
- ise 时钟约束_「新手入门」ISE工程升级到Vivado及板级信号调试技术
- files函数提取文件名HTML,Javascript – 如何从文件input控件提取文件名
- 学Web前端要用哪些工具?学成后薪资如何?
- 流量运营数据产品最佳实践——美团旅行流量罗盘
- 作者:龚南宁,数据堂(北京)科技股份有限公司对外合作部副总监
- [流体输配管网] 使用 Matlab 绘制莫迪图
- leetcode 200 python
- 阿里战微信!20 亿元扶持小程序开发者
- Word2Vec 与 Word Embedding的关系
- 免费遥感图像数据共享网汇总
- go-micro服务报错:wsasend: An existing connection was forcibly closed by the remote host
- 战场管理系统的全球与中国市场2022-2028年:技术、参与者、趋势、市场规模及占有率研究报告
- 程序员做笔记的利器:MarkDown软件
- 2021年5月信息系统项目管理师真题基础知识1~32题
- java读取Excel内容添加到list集合里面去
- 完美国际2找回老账号服务器,我告诉大家一个找回账号的办法