1

我正在使用 Java Mission Control 分析 Java 8 应用程序的一部分。我正在使用 Java Mission Control 6.0.0(Java 9 和 10 附带的版本)。在内存视图中,在 Java 应用程序下,我看到以下内容:

Java Mission Control 内存视图截图

87M 似乎对于 lambdas 来说是很多内存,尤其是在其他地方使用的内存的上下文中。我应该如何解释并优化 lambda 的内存使用?

4

1 回答 1

1

您可能希望对该数字持保留态度,Flight Recorder 对内存分配进行采样。我认为以字节为单位显示总数是一种误导,因为这种准确性不存在。显示“分配压力”的百分比会更好。

您可以使用该表粗略了解大部分分配发生的位置,至少在您有几百个样本的情况下。这类似于 Hot Methods 表,该表显示 JVM 执行的 Java 代码最多,但不显示方法已执行的毫秒数。

如果你想删除不必要的分配,我会查看堆栈跟踪,看看你是否可以在那里做点什么。

于 2018-07-29T02:29:34.563 回答