2013-09-27 50 views
9

我正在玩 Java任務控制配置文件即將與Java 7u40,我不能使它到配置文件分配和收集對象統計。無論我做什麼,我都無法在內存 - >對象統計窗口中看到任何統計信息。Java任務控制堆配置文件

下面的命令啓動收集:

jcmd <pid> JFR.start duration=60s settings=profile filename=alloc-prof.jfr 

Java Mission Control documentation沒有提到任何具體的選項,以使物體輪廓。我試圖創建自己的配置文件並設置:

<flag name="heap-statistics-enabled" label="Heap Statistics">true</flag> 
    <flag name="allocation-profiling-enabled" label="Allocation Profiling">true</flag> 

但仍然沒有收集對象統計信息。

回答

10

使用Mission Control中提供的模板管理器。

轉到Windows - >模板管理器,導入模板並檢查堆統計和分配分析,導出它。完成!

如果您想手動編輯jfc文件,可以很好地知道控制元素內部的元素不被JVM讀取,即flag-element,JMC使用它們來修改參數之外的參數控制元件(具有控制屬性)

手動編輯,您需要修改這些:

組Java啓用/ object_alloc_in_new_TLAB真

組Java啓用/ object_alloc_outside_TLAB真

將vm/gc/detailed/object_count設置爲true

請注意,有兩個對象計數事件,其中object_count_after_gc會增加GC次數。如果你選擇上面的那個,你會得到一個額外的GC每個記錄塊(這通常是足夠的)

+1

謝謝!我將首先嚐試導出選項。 –

+0

@ kire-haglin感謝您的詳細回覆,非常有幫助!是否有更多關於'object_count'和'object_count_after_gc'做什麼以及'everyChunk'的時間段是什麼意思的文檔?也就是說,兩者都會導致_additional_ GC,如果是這樣,爲什麼?什麼是「錄音塊」? – Hbf

+1

您可以將記錄塊視爲日誌文件。使用_period =「everyChunk」_事件在「日誌文件」被旋轉時寫入。這保證每個錄製文件至少有一個這樣的事件(由一個或多個錄製塊組成)。只有_object_count_添加了一個額外的GC。 –