パフォーマンス上の理由からString.intern()を使用する外部ライブラリを使用しています。それは大丈夫ですが、私は与えられたランでそのライブラリたくさんを呼び出すことだし、私は恐ろしい保留中の文字列を "フラッシュ"する方法はありますか?
java.lang.OutOfMemoryError: PermGen space
もちろん、私は、JVMコマンドライン-XX:MaxPermSize
修飾子を使用することができますが、その解決策ではないに実行します非常にスケーラブルです。代わりに、定期的に(ライブラリ呼び出しの2つの「バッチ」の間で)、インターネットされた文字列プールを "フラッシュ"します。つまり、Stringクラスが保持する静的な文字列テーブルを空にしますか?
"細かい"の定義を再評価する必要がありますね:p –
@pst yea私が言っていることは、これらの文字列が十分な理由のために保留されていることです。すべての呼び出しの後にそのテーブルを "フラッシュ"したくないか、完全にインターンシップをしたくないということです。各バッチの内部では、ライブラリは以前の呼び出しからインターンを楽しむことができます。 – Oak
奇妙 - ちょうど現代のJVMが内部文字列をgcしてくれると言っている[記事](http://www.codeinstructions.com/2009/01/busting-javalangstringintern-myths.html)を読んでください。多分あなたは未使用のStringオブジェクトへの多くの参照を保持しているでしょうか? –