私は最近、私が作業している既存のコードベースで次のスニペットを実行し、そこに表示されているコメントを追加しました。私は、この特定のコードをきれいにするために書き直すことができますが、私の分析が正しいかどうか疑問に思っています。多くの同一の匿名クラスを宣言すると、Javaのメモリが浪費されますか?
javaは新しいクラス宣言を作成し、このメソッドの呼び出しごとにperm gen空間に格納しますか、または既存の宣言を再利用することはわかりますか?
protected List<Object> extractParams(HibernateObjectColumn column, String stringVal) {
// FIXME: could be creating a *lot* of anonymous classes which wastes perm-gen space right?
return new ArrayList<Object>() {
{
add("");
}
};
}
しかし、静的なネストされたクラスではなく内部クラスを使用すると、外側の$ thisポインタのために少しのメモリが無駄になることがあります。それはヒープメモリだろう。 – Thilo
コードが重複していると、コードが煩雑になり、管理が難しくなります。 –