3

私が経験したところによると、マップは Grails と Groovy の開発において非常に一般的なイディオムです。より伝統的な Java を実行しているプロジェクトに移った今、私は Tech Lead から Java を使っていることで大打撃を受けていHashMapsます。 HashMaps使用してStrongReferencesください。 StrongReferences参照チェーンがあるときはいつでも固執してください。

私が Groovy で見た一般的なイディオムは、基本的に POJO の代わりにマップを使用することです。(例として、ネットで例を参照すると、いたるところに表示されます。)

Grails は、すべてのマップ イディオムを使用して、これをどのように回避するのでしょうか? Grails アプリケーションでメモリ プロファイリングを行った人はいますか? マップのようなものparamsはしばらくぶらぶらしていますか、それともユーザー セッションが終了すると予想通り死んで収集されますか? Mapsそれとも、Grails での使用について、Java での使用と同じように認識する必要がありますか?

=======更新==== 上記の質問はまだ残っていますが、参照に使用された記事は次のとおりです。

4

2 に答える 2

3

のインスタンスはHashMap、Java の他のクラスのインスタンスと何ら変わりはありません。マップ (それぞれ POJO) が到達可能である限り、マップ エントリ (それぞれ POJO のフィールド) によって参照される他のすべてのオブジェクトも同様に到達可能です。マップ (POJO) インスタンスが参照されなくなると、マップ (POJO) を介してのみ到達可能だったすべてのエントリ (フィールド)がガベージ コレクションの対象になります。

この点で、マップは他のクラスと比べて良くも悪くもありません。

于 2013-02-25T13:07:02.907 に答える
1

私は、マップを使用しないという強力な参照引数を購入しません。

HashMap への参照がなくなった後は、GC の対象となり、それに続いて、他の何かによって参照されていないすべての要素も対象となります。

値にアクセスする方法がなくなるまで値を保持するマップについては、WeakHashMapを確認してください。

于 2013-02-25T13:09:53.460 に答える