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

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

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使用此标志,如以下屏幕快照所示:

20160411-printCommandLineFlags-showsCollector

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

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

20160411-printCommandLineFlags-showsCollector

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

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

20160412-jconsoleOnlyShowsExplicitVMArgs

20160412-jvisualvmOnlyShowsExplicitVMArgs

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

20160412-jconsoleMBeansPSMarkSweep

20160412-jvisualvmMBeansPSMarkSweep

以上示例演示了确定三种垃圾收集器适用的三种基本方法。 下表针对先前演示的并行/吞吐量收集器以及其他两个主要的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

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

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

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

相关文章

树与堆的基本概念

当看到这里的时候&#xff0c;相信你的链表&#xff0c;队列&#xff0c;栈学的也差不多可以了&#xff0c;那么接下来让我们一起进入树的学习吧&#xff01; 一.树的概念以及一些知识记忆 树的定义&#xff1a; 树是一种 非线性 的数据结构&#xff0c;它是由 n &#xff08…

jboss war包放哪_如何将JBoss HR Employee Rewards项目放入云端

jboss war包放哪我们一直在讨论为什么应用程序开发人员在App Dev Cloud Stack系列中不能再忽略其堆栈了。 我们从头到尾讨论了各个层次&#xff0c;但尚未为您提供除Red Hat Container Development Kit&#xff08;CDK&#xff09;之外的任何应用程序开发工具。 到目前为止&am…

hotspot 垃圾收集器_HotSpot增量Java垃圾收集器

hotspot 垃圾收集器在我最近的博客文章“ 确定活动的HotSpot垃圾收集器”中 &#xff0c;我描述了可用于确定HotSpot JVM &#xff08;Java进程&#xff09;正在使用的垃圾收集器&#xff08;当从命令行参数&#xff08;标志&#xff09;中变得不明显时&#xff09;的不同方法。…

【安卓开发 】Android初级开发(一)控件通用属性

控件通用属性 match_parent 是指和父容器宽高相等的值&#xff0c;其他的同理可证。 android:layout_marginTop"XXXXXXdp" 距离顶部的距离 Android TextView属性详解 该控件相关属性 Android EditText属性大全 相关属性查看地址 事件监听处理 package com.examp…

认证令牌_Java应用程序的令牌认证

认证令牌建筑物身份管理&#xff0c;包括身份验证和授权&#xff1f; 尝试Stormpath&#xff01; 我们的REST API和强大的Java SDK支持可以消除您的安全风险&#xff0c;并且可以在几分钟内实现。 注册 &#xff0c;再也不会建立auth了&#xff01; 2016年5月12日更新&#xf…

java package报错_Java基础知识总结 - 超详细篇(上)

1&#xff0c;JDK&#xff1a;Java Development Kit&#xff0c;java的开发和运行环境&#xff0c;java的开发工具和jre。2&#xff0c;JRE&#xff1a;Java Runtime Environment&#xff0c;java程序的运行环境&#xff0c;java运行的所需的类库JVM(java虚拟机)。3&#xff0c…

weblogic 建立websocket连接报404_基于 Serverless 与 Websocket 的聊天工具实现

传统业务实现 Websocket 并不难&#xff0c;然而函数计算基本上都是事件驱动&#xff0c;不支持长链接操作。如果将函数计算与 API 网关结合&#xff0c;是否可以有 Websocket 的实现方案呢&#xff1f;API 网关触发器实现 WebsocketWebSocket 协议是基于 TCP 的一种新的网络协…

monolith_将Java EE Monolith雕刻成微服务

monolith在介绍了为什么微服务应该由事件驱动的简介博客之后&#xff0c;我想采取一些其他步骤&#xff0c;并在有关博客的同时准备我即将进行的一系列演讲&#xff08;在jBCNconf和Red Hat Summit上与您见面&#xff09; 。旧金山 &#xff09;。 在Twitter christianposta上关…

spring内容协商管理_Spring框架中的内容协商

spring内容协商管理1.简介 使用BeanNameViewResolver完成的工作就是&#xff0c;我们刚刚在Spring上下文中创建了多个bean视图以生成预期的输出。 Spring很快引入了内容协商策略 &#xff0c;该策略可以使用传统的RESTful ResponseBody方法和HTTP消息转换器&#xff0c;以JSON或…

二叉树专题

二叉树 &#xff08;一&#xff09;二叉树的三种遍历方式&#xff1a; 前序遍历 &#xff1a; 1 2 4 5 3 6 7 &#xff1b; 中序遍历 &#xff1a; 4 2 5 1 6 3 7 &#xff1b; 后序遍历 &#xff1a; 4 5 2 6 7 3 1 &#xff1b; 本质是在递归序的基础上…

echart中拆线点的偏移_Real BIM | Rhino+Grasshopper在双曲异形玻璃幕墙中的应用

转载请联系并注明来源你好&#xff0c;我以自己所做的项目为例&#xff0c;介绍一下我的认知里&#xff0c;BIM技术对于真实项目的作用。案例是一个异形、双曲面的玻璃屋盖幕墙系统。如效果图所示&#xff0c;玻璃屋盖呈波浪状&#xff0c;塔楼装饰条与屋盖装饰条需要无缝连接。…

【安卓开发】Android初级开发(okhttp3发送带header与带参数的GET请求)

1.首先需要先加入相应依赖 dependencies{implementation com.squareup.okhttp3:okhttp:3.13.1 implementation com.squareup.okio:okio:2.2.2} 2.加入互联网权限 <!-- 互联网 --><uses-permission android:name"android.permission.INTERNET" /> <!…

sql 返回日期的年月部分_公示|2020年11月部分志愿活动名单公示

2020年11月部分志愿活动名单公示2020年11月18日人文与法学学院院楼协助分发教职工运动会服装志愿活动2020年11月19日人文与法学学院院楼“收彩旗”志愿活动2020年11月20日人文与法学学院组织观看2020年全国科学道德和学风建设宣讲教育报告会直播志愿活动(此活动不录入i志愿)202…

【安卓开发 】Android初级开发(三)动画

逐帧动画 方法一&#xff0c;在xml中设置 1.先将图片加入drawable 2.在drawable中新建xml,设置每一帧的图片和时间 <?xml version"1.0" encoding"utf-8"?> <animation-list xmlns:android"http://schemas.android.com/apk/res/android&…

javafx swing_Swing应用程序中的JavaFX 8 DatePicker

javafx swing1.概述 本文显示了一个使用JavaFX 8 DatePicker控件的Java SE 8 Swing应用程序的示例。 DatePicker控件允许用户以文本形式输入日期或从日历弹出窗口中选择日期。 本示例使用其中带有FX控件的Swing JFrame 。 为了将FX内容嵌入Swing应用程序中&#xff0c; javafx…

cup过高是什么意思_做青和焙火有什么关系?

武夷岩茶制作工艺复杂&#xff0c;环环相扣&#xff0c;每一步工艺对下一步工艺都有很大的影响&#xff0c;经过一系列的生化变化&#xff0c;最终呈现一杯好茶在我们面前&#xff0c;那我们最关心的做青和焙火两个问题&#xff0c;有什么影响呢&#xff1f;它们之间既有因果关…

【安卓开发 】Android初级开发(四)ListView

ListView的实现步骤 1.单独一行的布局可以如下 <?xml version"1.0" encoding"utf-8"?> <LinearLayout xmlns:android"http://schemas.android.com/apk/res/android"android:orientation"horizontal"android:layout_width&…

不能装载文档控件。请在检查浏览器的选项中检查浏览器的安全设置_【网络安全宣传周】网络安全小黑板 | 如何正确设置浏览器...

李夏是一个公司的职员&#xff0c;一天晚上加班赶制文档&#xff0c;由于要向客户汇报产品情况&#xff0c;需要获取大量网上信息&#xff0c;然而在制作中却发现浏览器的网页打不开了。第二天原计划向客户展示的材料未能完整汇总&#xff0c;客户见面对接效果也打了折扣。在当…

vs 不能自动 析构函数_深入理解C++虚函数的override、overload与hide以及虚析构函数...

今天主要讲的是虚函数的override与overload的区别。首先我们来看一段代码&#xff1a;示例代码#include <stdio.h>#include <string>#include <iostream>#include <complex>using namespace std;class Father{public: Father(); ~Father(); virtual vo…

tampermonkey怎么不能用了_普洱茶发霉了怎么办?能不能用太阳晒

大家都知道普洱茶要储藏在通风干燥的地方&#xff0c;如果储存不恰当就可能变质发霉。而且普洱茶很容易吸味&#xff0c;需要存放到干净的环境并避免日晒。当发现茶叶发霉的现象比较严重时&#xff0c;需要直接扔掉。如果不严重&#xff0c;可以采用以下方法&#xff1a;千万不…