2016-11-20 3 views
-4

クラスのオブジェクトを作成すると、オブジェクトがヒープに移動し、参照変数がスタックに配置されます。JVMがOutOfMemoryにならないようにするためにどのようなテクニックを使うべきですか?

私がここで尋ねようとしているのは、オブジェクトの作成回数によってOutOfMemoryエラーが発生し、JVMのメモリが不足することです。

また、春には依存性注入を使用してオブジェクトを作成し、IOCコンテナがオブジェクトとそのライフサイクルを作成および管理します。したがって、問題はすべてのオブジェクトが格納される場所と、IOCコンテナがメモリ不足になる可能性があることです。

制限はありますか?

+2

* "作成できるオブジェクトの数は?" *明らかにオブジェクトのサイズとメモリの量によって異なりますので、どのような一般的な答えを期待していますか? --- * "すべてのオブジェクトはどこに格納されますか?" *ヒープ上では、あなた自身がすでに言ったように。 --- * "IOCコンテナがメモリから外れる可能性はありますか?" *また、明らかに**は、Beanの数とサイズ、メモリの量によって決まります。 --- * "制限はありますか?" – Andreas

+0

@Andreasそれでは、制限はありますか?IOCには、すべてのオブジェクトを格納するか、同じヒープを使用する独自のメモリ領域がありますか? – sNegi

+1

制限はメモリの量です。他にどんな制限がありますか?--- IOCはJavaコードでもあり、ヒープは1つだけです。 – Andreas

答えて

0

オブジェクトの長さによっては、何らかの種類のキャッシュなどに依存します。 大きなテーブルやファイルをメモリにロードしようとすると、スタック上のオブジェクトでもOOMを取得できます。

OOMを防止する場合は、アプリケーションのメモリ使用量を知る必要があります。 AppDynamics、Dynatrace、NewRelicなどのプロファイラまたはAPMツールを使用して、メモリ使用パターンを確認したり、ヒープダンプをほとんど取り除いたり解析したりできます。

0

保存できるオブジェクトの数は、最大ヒープサイズと各オブジェクトのサイズによって異なります。典型的なサーバーサイズが4 GBの場合、数千万のオブジェクトを作成できます。重大な量のデータをロードしていない限り、メモリが不足する可能性は非常に低くなります。

0

OutOfMemoryエラーが発生し、JVM のオブジェクトがいくつ生成され、メモリが不足しますか?

これは、デフォルトで設定されたオブジェクト数とJVMヒープサイズによって、または-Xmxパラメータを使用して構成されます。

また、春には、我々は、依存性の注入を使用してオブジェクトを作成し、 IOCコンテナを作成し、彼らと彼らのライフサイクルを管理します。 それでは、すべてのオブジェクトがどこに格納されるのかと、IOCコンテナがメモリ不足になる可能性は何ですか? new演算子を使用して、クラスのオブジェクトを手動で作成する代わりに、我々の

は、我々はIOCコンテナにデューティを与えている(制御された方法に依存性を注入します)。したがって、私たちがnewオペレータまたはIOCコンテナを使用してオブジェクトを作成するかどうかにかかわらず、どちらも最終的にJVM内に常駐します。

IOCコンテナはJVM内のすべてのオブジェクトのみを管理し、すべてのオブジェクトはヒープメモリに格納され、メモリ不足の可能性は前述のデフォルトまたは-XmXに依存します。

+0

春はどのように区別され、すべてが1か所に保存される場合、春を使用して作成されたオブジェクトのみを追跡します。 – sNegi

+0

Springはapplciationcontextを通じてこれを管理します – developer

関連する問題