memory-leaks - Tensorflow memory leak - Javaでメモリリークを起こすにはどうすればいいですか?

java メモリリークとは / java / memory

インタビューを受けたところ、Javaでメモリリークを作成するように依頼されました。

18 revs, 14 users 33%



Answer #1

これはhttp://wiki.eclipse.org/Performance_Bloopers#String.substring.28.29経由の単純で不吉なものです。

public class StringLeaker
{
    private final String muchSmallerString;

    public StringLeaker()
    {
        //ここで独立宣言全体を想像してみてください
        String veryLongString = "We hold these truths to be self-evident...";

        //ここの部分文字列は、内部char []への参照を維持します
        //元の文字列の表現。
        this.muchSmallerString = veryLongString.substring(0, 1);
    }
}

元の文字列への不要な参照を保存しないようにするには、次のようにします。

...
this.muchSmallerString = new String(veryLongString.substring(0, 1));
...
...
this.muchSmallerString = veryLongString.substring(0, 1).intern();
...