我在用 java 生成应用程序时遇到了一些垃圾收集问题,我使用 Stream.map 修剪列表中的所有元素。匿名 lambda 类的实例存在于堆转储中,即使封闭类的实例为 0,如可视化 VM 的快照所示。
LambdaTesting 类:
class LambdaTesting {
protected List<String> values;
protected LambdaTesting(List<String> values) {
this.values = values;
}
public List<String> modify() {
return this.values.stream().map(x -> x.trim()).collect(Collectors.toList());
}
public List<String> modifyLocal() {
List<String> localValue = new ArrayList<>();
localValue.add("Local FOO ");
localValue.add("Local BAR ");
return localValue.stream().map(x -> x.trim()).collect(Collectors.toList());
}
}
Run Code Online (Sandbox Code Playgroud)
创建 LambdaTesting 实例并调用这些方法的方法:
public List<String> testMethods() {
List<String> test = new ArrayList<>();
test.add("Global FOO ");
test.add(" GLOBAL BAR");
LambdaTesting lambdaTesting = new LambdaTesting(test);
lambdaTesting.modifyLocal(); …Run Code Online (Sandbox Code Playgroud)