gpt4 book ai didi

lambda 表达式的 Java 堆转储分析

转载 作者:行者123 更新时间:2023-12-02 03:07:59 24 4
gpt4 key购买 nike

我的 Java 应用程序堆转储显示我的类中使用的特定 lambda 已锁定一定量的内存,并且在 GC 期间不会释放它。

堆将特定的匿名 lambda 类显示为 ParentClass$$Lambda$ID,在当前情况下,ID 为 79(附图)。这个 ID 似乎与类中存在的 lambda 数量没有任何关系,因此我们无法断定代表的是哪个 lambda。我有兴趣指出确切的 lambda 表达式,因为它有助于分析、修复和测试相关场景。

使用 DJ 反编译类文件没有帮助,因为它会将 lambda 表达式重新创建为可读代码。如果对此有任何想法,请告诉我。

enter image description here

最佳答案

尝试定义系统属性

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

调用 JVM 时。这将导致运行时将动态生成的 lambda 类写入磁盘,您可以在其中使用 javap 检查它们。这将使您能够查看它们持有哪些字段(捕获的变量),以及 lambda 对应的 lambda 主体方法。

关于lambda 表达式的 Java 堆转储分析,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30934890/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com