日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

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

發(fā)布時間:2023/12/3 编程问答 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 确定活动的热点垃圾收集器 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

StackOverflow問題查找正在運行哪種類型的垃圾收集 器,jvm的默認垃圾收集器 , 如何通過查看gc日志來查看正在運行的垃圾收集器? ,以及如何知道HotSpot jvm的當前GC策略? 和博客文章如何以編程方式獲取GC信息表明了人們有時希望知道Java應(yīng)用程序使用了哪個Java垃圾收集器。 在本文中,我將介紹確定與Oracle HotSpot VM中運行的Java應(yīng)用程序關(guān)聯(lián)的垃圾收集器的一些最簡單,最常見的方法。

出于演示目的,我將運行一個簡單的Java應(yīng)用程序。 該應(yīng)用程序的代碼對于演示如何確定適用的垃圾收集器并不重要。 可以使用命令java -cp stringInstantiationsDemo.jar dustin.examples.demo.IndefiniteRun運行簡單的Java應(yīng)用程序。 請注意,對于要使用的垃圾收集器,沒有JVM標志的規(guī)范。 這意味著JVM將使用根據(jù)人體工程學選擇的垃圾收集器。

確定所選垃圾收集器的一種簡單方法是使用-XX:+ PrintCommandLineFlags標志 (我在博客文章JavaOne 2011:HotSpot Performance命令行選項的權(quán)威集 )中對此進行了描述。 該標志可以在命令java -XX:+PrintCommandLineFlags -cp stringInstantiationsDemo.jar dustin.examples.demo.IndefiniteRun如以下屏幕快照所示:

如最后一個屏幕快照所示,使用-XX:+PrintCommandLineFlags演示了-XX:+UseParallelGC標志的存在,該標志指示在這種情況下自動使用的收集器是并行收集器 (也稱為吞吐量收集器)。

使用-XX:+PrintCommandLineFlags可以使我們看到在啟動新的Java應(yīng)用程序時按人體工程學選擇的垃圾收集器工作正常。 當我們想看到已經(jīng)在運行的Java進程使用的垃圾收集器時, jcmd派上了用場(我在jcmd文章中寫道了這個有用的工具:一個JDK命令行工具來統(tǒng)治他們 )。 在下一個屏幕快照中jcmd進行了說明,該屏幕快照演示了如何使用jcmd查看已經(jīng)運行的Java應(yīng)用程序的JVM命令行標志。

從上一張圖像中,我們看到可以使用jcmd <pid> VM.flags標識將指示正在使用的垃圾收集器的虛擬機標志。 在這種情況下,我們再次看到-XX:+UseParallelGC的存在,指示并行/吞吐量垃圾收集器的使用。

我剛剛演示了如何使用jcmd查看隱式JVM參數(shù),該參數(shù)告訴我們在未明確指定垃圾收集器時為特定應(yīng)用程序的VM自動選擇了哪個垃圾收集器。 下兩個圖像顯示JConsole和VisualVM不顯示隱式JVM參數(shù),因此不顯示未指定時自動使用的垃圾收集器。

盡管JConsole和VisualVM均未顯示隱式Java虛擬機參數(shù)(例如隱式選擇的垃圾收集器),但仍可以使用兩種工具通過對象類型為java.lang:type=GarbageCollector JMX和GarbageCollectorMXBean來確定使用中的垃圾收集器。 對于本文到目前為止使用的簡單應(yīng)用程序,它將是java.lang:type=GarbageCollector,name=PS MarkSweep因為這是并行或吞吐量收集器。 接下來的兩個屏幕快照中的JConsole和VisualVM (通過MBeans插件 )對此進行了演示。

上面的示例演示了確定哪種垃圾收集器適用的三種基本方法。 下表針對先前演示的并行/吞吐量收集器以及其他兩個主要的Oracle HotSpot JVM收集器( CMS和G1 )總結(jié)了這些內(nèi)容。 下表顯示了確定上述一種方法(在命令行, jcmd或JMX MXBean上明確指定)使用哪個收集器(并行,CMS或G1)時要查找的內(nèi)容。

垃圾收集器 明確的命令行 jcmd VM.flags java.lang:type = GarbageCollector,name = 并行 / 吞吐量 并發(fā)標記掃描(CMS) 垃圾優(yōu)先(G1)
-XX:+UseParallelOldGC
-XX:+UseParallelGC
PS MarkSweep
PS清道夫
-XX:+UseConcMarkSweepGC 并發(fā)標記掃描
-XX:+ UseG1GC G1老一代
G1青年一代

盡管未在此處顯示,但從VisualVM或JConsole確定正在使用哪個收集器的另一種方法是使用 DiagnosticCommandMBean 來查找 VM.flags , jcmd 提供VM標志一樣,如上所述。 在《 在JConsole和VisualVM中查看DiagnosticCommandMBean》 一文中,我已經(jīng)寫了使用 DiagnosticCommandMBean 完成 jcmd 行為的 博客 。

JVM通常會阻止提供兩個不同的垃圾收集器標志。 當兩次嘗試啟動Java應(yīng)用程序同時存在時,將顯示諸如“選項列表中的收集器組合沖突”的消息,并且Java進程將不會啟動。 因此,只需要為與正在運行的Java應(yīng)用程序關(guān)聯(lián)的特定收集器標識一個標志,即可知道正在使用哪個收集器。 這篇文章演示了多種簡單的方法,可用于確定在給定應(yīng)用程序的JVM中應(yīng)用了哪個HotSpot垃圾收集器。

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

總結(jié)

以上是生活随笔為你收集整理的确定活动的热点垃圾收集器的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。