【发布时间】:2013-06-28 07:02:11
【问题描述】:
我已经查看了 java 子字符串方法的所有内存泄漏解决方案。由于这个问题,我仍然收到内存不足错误。我有一个长度为 1000-3500 的字符串数组列表。我索引它们并存储它们。问题是每个字符串都需要循环运行以存储同一字符串的所有可能不同长度。为此,我使用 for 循环和子字符串方法。而且这种方法会导致内存泄漏问题。
我所做的 sudo 代码:
for(int i=0;i<str.length;i++)
{
//create substring and index it
str.substring(0,(str.length()-i));
}
str:字符串。上面的循环一直运行到数组列表中的所有字符串都被索引为止。我试图通过以下方式修复泄漏,
1.
for(int i=0;i<str.length;i++)
{
//create substring and index it
new String(str.substring(0,(str.length()-i)));
}
2.
for(int i=0;i<str.length;i++)
{
//create substring and index it
new String(str.substring(0,(str.length()-i)).intern());
}
3.
for(int i=0;i<str.length;i++)
{
//create substring and index it
new String(str.substring(0,(str.length()-i))).intern();
}
我仍然有问题。我的java版本是:1.7.0_17。
编辑:
我知道这不是 cmets 的内存泄漏问题。我正在索引一些连续的字符串。比如说,
String s= abcdefghijkl;
我想将每个字符串索引为:
abcdefghjk
abcdefghj
abcdefhg
abcdefh
abcdef
abcde
abcd
..
..
a
为此,我获取一个字符串,然后执行子字符串操作,获取该字符串并对其进行索引。
【问题讨论】:
-
您是如何发现有泄漏的?
-
是的,您确定这是泄漏而不是大量使用内存吗?您是否尝试过增加堆大小?还请发布一个SSCCE 来演示泄漏。
-
你为什么要这样做?这看起来像一个 XY 问题。是否愿意准确说出您想要实现的目标?
标签: java memory-leaks substring