什么是释放 StringBuilder 内存的最快方法?
以下是我尝试释放内存并使对象尽快成为垃圾回收的代码片段。
选项1:
据我了解,一旦使用StringBuilder对象,其中的所有数据都将被删除,并且对象将成为垃圾回收的对象。但是,StringBuilder占用的文本内存将被释放。它内部的字符串值是否也会从堆中删除或存储在字符串池中?
这将重置字符串构建器的长度,但不会被垃圾回收。
选项3:
这将重置字符串生成器并使其符合垃圾回收的条件!
StringBUilder sb = new StringBuilder();
sb.apppend(maximum value possible);
以下是我尝试释放内存并使对象尽快成为垃圾回收的代码片段。
选项1:
sb = null;
据我了解,一旦使用StringBuilder对象,其中的所有数据都将被删除,并且对象将成为垃圾回收的对象。但是,StringBuilder占用的文本内存将被释放。它内部的字符串值是否也会从堆中删除或存储在字符串池中?
sb.setLength(0);
这将重置字符串构建器的长度,但不会被垃圾回收。
选项3:
sb.delete(0,sb.length());
这将通过删除其中的所有数据来重置字符串构建器,但它不会被垃圾回收。
选项4:
sb.delete(0,sb.length());
sb = null;
这将重置字符串生成器并使其符合垃圾回收的条件!
StringBuilder
的内容永远不会进入其中。 绝对不会。 只有实际的String
才会进入其中,而且只有在运行时通过调用.intern()
将它们明确放置在那里,或者编译器在编译时将它们放置在那里。 - Kevin Anderson