如何解决Java 中的辅助函数可以节省内存吗?
如果你有一个大函数并且在函数中有几个变量来创建新对象。对象在堆内存中,直到我们超出函数的范围,然后它们被标记为 GC,对吗?因此,如果您将函数分解为几个小函数,那么在调用函数结束之前,这些辅助函数所需的对象会被标记为 GC,这可能会为调用函数中的其他内容清除内存,对吗?
public ArrayList<File> someProcessing()
{
ArrayList<File> files = new ArrayList<Files>();
// Skipping getting the files for convenience
// Do Something
LargObject obj = new LargeObject();
obj.doSomething(files);
// Do something else
DifferentLargObject obj2 = new DifferentLargeObject();
obj2.doSomething(files);
return files;
}
这里 obj 和 obj2 会一直存在,直到我们不再处于 someProcessing 的范围内
如果我们再做 2 个函数:
private void foo(ArrayList<File> files)
{
// Do Something
LargObject obj = new LargeObject();
obj.doSomething(files);
}
private void bar(ArrayList<File> files)
{
// Do something else
DifferentLargObject obj2 = new DifferentLargeObject();
obj2.doSomething(files);
}
并将 someProcessing 更改为
public ArrayList<File> someProcessing()
{
ArrayList<File> files = new ArrayList<Files>();
// Skipping getting the files for convenience
// Do Something
foo(files);
// Do something else
bar(files);
return files;
}
在 foo() 之后,obj 应该被标记为 GC 对吗?因此,可能会为以后的 someProcessing() 函数节省内存。为了澄清,我只是在问我的假设是否正确。另外,我真的没有这样的问题。这只是一个想法。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。