StringBuilder可能出现内存泄漏?

IAm*_*aja 0 java file-io memory-leaks

我使用a StringBuilder来创建一个File对象,但我也用它来查看该文件所在的目录是否存在:

StringBuilder sbFile = new StringBuilder();
sbFile.append("/home/logs/");

File oFile = new File(sbFile.toString());

if(!oFile.exists())
    oFile.mkdir();

sbFile.append("MyLogFile.log");

oFile = new File(sbFile.toString());
Run Code Online (Sandbox Code Playgroud)

但我担心oFile在字符串生成器(/home/logs/vs /home/logs/MyLogFile.log)的两个不同"版本"上重用相同的引用会产生内存泄漏.如果是这样,我该怎么写这个呢?

npe*_*npe 6

没有内存泄漏.File第一次创建的实例将在不再使用时由JVM进行垃圾收集.

另一件事是你真的不需要使用StringBuilder.Fileclass有一个构造函数,它接受文件和文件名.您的示例可能如下所示:

File parent = new File("/home/logs/");
if(!parent.exists())
    parent.mkdir();

File file = new File(parent, "MyLogFile.log");
// TODO: do something with file...
Run Code Online (Sandbox Code Playgroud)

此外,您可能对Java中垃圾收集的工作方式感兴趣.