0

struts 2 アクションでは、リクエストを介してパラメーターを取得しています。そこで、アクションで変数を定義しました。現在、アーキテクトは、アクションの execute メソッドの finally ブロックで、この変数を null に初期化するよう主張しています。私は反対です。なぜなら、これらのクラス変数を初期化するのではなく、これらの変数を初期化するフレームワークだからです。しかし、アーキテクトは、Java 変数を解放しないと、プログラムがより多くのメモリを消費すると主張しています。

初期化してはいけない確かな理由を教えてください: execute メソッドの finally ブロックでアクション クラスの変数を null にします。

4

1 に答える 1

1

Struts アクションにフィールドを持つことの要点は、execute()メソッドがジョブを完了したら、ビューでそれらにアクセスできるようにすることです。フィールドを null に設定すると、ビューがフィールド値にアクセスできなくなります。これは、ほとんどの場合、正確に望んでいるものではありません。

さらに、フィールドがビューで使用されていない場合でも、Java にはガベージ コレクターと呼ばれる素晴らしい機能があり、アクションとその参照オブジェクトにアクセスできなくなった場合に、それらを喜んでガベージ コレクションします。アクションは非常に寿命の短いオブジェクトなので (リクエストの間、つまり数ミリ秒の間存続します)、ガベージ コレクターはそれらを非常に高速に収集でき、長い間メモリを消費しません。それらを null に設定する必要はまったくありません。

于 2013-08-16T13:21:56.440 に答える