簡體   English   中英

lambda表達式的Java堆轉儲分析

[英]Java heap dump analysis for lambda expressions

我的Java應用程序堆轉儲顯示我的類中使用的特定lambda鎖定了一些內存,並且在GC期間沒有釋放它。

Heap將特定的匿名lambda類顯示為ParentClass $$ Lambda $ ID ,在當前情況下,ID為79(附加圖像)。 這個ID似乎與類中存在的lambda的數量沒有任何關系,因此我們不能斷定表示哪個lambda。 我有興趣指出確切的lambda表達式,因為它有助於分析,修復和測試相關的場景。

使用DJ反編譯類文件沒有幫助,因為它將lambda表達式重新創建為可讀代碼。 如果有任何想法,請告訴我。

在此輸入圖像描述

嘗試定義系統屬性

jdk.internal.lambda.dumpProxyClasses=/path/to/dir

在調用JVM時。 這將導致運行時將動態生成的lambda類寫入磁盤,您可以使用javap檢查它們。 這將使您能夠查看它們保存的字段(捕獲的變量)以及lambda對應的lambda body方法。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM