gpt4 book ai didi

java - 在特定时间点释放 Java 内存

转载 作者:行者123 更新时间:2023-12-04 06:56:20 24 4
gpt4 key购买 nike

给定这段代码,我们在其中加载大量数据,将其写入文件,然后运行 ​​exe..

void myMethod() {
Map stuff = createMap(); //Consumes 250 MB memory
File file = createFileInput(stuff); //Create input for exe
runExectuable(file); //Run Windows exe
}

释放 stuff消耗的内存的最佳方法是什么?在运行 exe 之前?我们不再需要它在内存中,因为我们已将数据转储到文件中以输入到 exe 中...

最好的方法是设置 stuff = null之前 runExecutable(file) ?

最佳答案

最好的答案可能是:什么都不做。

Java 编译器非常聪明。可以看出stuff createFileInput(stuff) 之后不再需要并重写代码以确保它是 GCable。如果您想 100% 确定,您可以将其设置为 null,但编译器可能已经为您完成了。并将其设置为 null 并不能保证它会被 GC 处理。

先尝试做一些分析,我想你会发现内存已经被释放了。天真地检查您的代码以找到您认为存在内存问题的地方很少会有好的结果。获取一些数据。

编辑:请注意,编译器可以是 javac或 JIT 编译器。两者都非常了解这样的事情,并进行了您无法想象的各种优化。底线:编写干净的代码,然后对其进行分析并从那里进行优化。

EDIT2:对于那些对 JVM 使用内存的技巧感兴趣的人,我强烈推荐这个博客(它很好地解释了这个特定问题):http://jeremymanson.blogspot.com/2010/02/garbage-collection-softreferences.html

关于java - 在特定时间点释放 Java 内存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2516723/

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