大量のデータを含む変数を使用しましたString data
。この文字列の一部を次のように使用したいと思います。
this.smallpart = data.substring(12,18);
(メモリビジュアライザを使用して)数時間デバッグした後、objectsフィールドにsmallpart
はのすべてのデータが記憶されていることがわかりましたがdata
、部分文字列しか含まれていませんでした。
コードを次のように変更した場合:
this.smallpart = data.substring(12,18)+"";
..問題は解決しました!現在、私のアプリケーションはメモリをほとんど使用していません!
そんなことがあるものか?誰かがこれを説明できますか?this.smallpartはデータを参照し続けたと思いますが、なぜですか?
更新:では、 どうすれば大きな文字列をクリアできますか?data = new String(data.substring(0,100))はそれをしますか?
new String(String)
ます。stackoverflow.com/a/390854/8946を参照してください。