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: 文字列。上記のループは、arraylist 内のすべての文字列にインデックスが付けられるまで実行されます。漏れを直そうとしたのですが、
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 です。
編集:
これはコメントからのメモリリークの問題ではないことを理解しています。いくつかの連続した文字列にインデックスを付けています。たとえば、
String s= abcdefghijkl;
各文字列を次のようにインデックス付けしたい:
abcdefghjk
abcdefghj
abcdefhg
abcdefh
abcdef
abcde
abcd
..
..
a
これを実行するには、文字列を取得し、部分文字列操作を実行し、その文字列を取得してインデックスを付けます。