2016-06-18 36 views
-2

私はインタビューを受けて、Javaでメモリ断片化を防ぐ方法を尋ねました。誰でもJavaの処理方法を要約できますか?私はいくつかの文書を読みましたが、それは非常に複雑です。Javaの断片化を防ぐには?

+0

このタイトルはあなたの質問にどのように関連していますか? – Gendarme

+0

あなたは何もしません。 JVMはそれを行います。広すぎます。 – EJP

+0

@EJP。私はすでにこれを知っていた。私はJavaがどのようにメモリ断片を防ぐのかを理解しようとしています。ありがとう –

答えて

2

簡単な答えは世代別ガベージコレクタを使用することです。最も近代的なJavaの実装がデフォルトで世代コレクタを使用することを除いて

。言い換えれば、あなた(プログラマ)はすでに処理されているので、この問題に対処する必要はありません。

フラグメンテーションに遭遇する唯一の状況は、低ポーズコレクターを誤調整した場合、「世界を止める」フルコレクションに落ちた場合です。その時点で、非圧縮コレクタを使用している可能性があり、フラグメンテーションが発生する可能性があります。しかし、そのような状況に陥るのを避けるためにチューニング(またはアプリケーション、またはヒープサイズ)を調整する解決策があります。


1 - いくつかの本当に古いJavaの実装は、原始的なマークスイープコレクターを使用しました。しかし、彼らはずっと去っています。

+0

しかし、私はそれがどのように動作するのか知る必要があります。もっと詳しく説明できますか? –

+3

ガベージコレクタの仕組みに関する書籍があります(文字通り)。その他、ウェブ上のその他多数のリソース。世代コレクターがどのように機能するかを説明する回答が必要な場合は、質問が広すぎます。 –

+0

@OP、Javaのプログラマとして、基本的にw番目のガベージコレクションを扱う必要はありません。ガベージコレクションは、あなたではなく、JVMによって処理されます。 – ifly6