java - ArrayList のメモリ割り当て、世代間参照 gc の問題
黄舟
黄舟 2017-05-17 10:07:27
0
1
908

JVM における ArrayList のメモリ割り当ては何ですか?

リーリー

BigObjectを続けて追加すると、 参照関係は以下のようになるでしょうか

その後 ygc が発生しますが、BigObject は古い領域に入ったのでしょうか? arrayList オブジェクトが古い領域に入っていない場合、世代間参照はないのでしょうか?入った場合、ygcの後、obj = new BigObject()が新世代に割り当てられ、list.add(obj)でold->young領域への参照があるのではないか?割り当てのような?

問題の原因

次のコードを実行します:
Parameters:/jdk1.7.0_79.jdk/bin/java -Xmx500M -Xms500M -Xmn200M -XX: UseConcMarkSoupGC -XX: UseCMSInitiatingOccupancyOnly -XX:CMSInitiatingOccupancyFraction=90 -XX: PrintGCApplicationConcurrentTime - XX : PrintGCApplicationStoppedTime -XX: PrintHeapAtGC -XX: PrintGCDateStamps -XX: PrintHeapAtGC -XX: PrintGCDateStamps -verbose:gc -XX: PrintGCDetails -Xloggc:/Users/*/temp/test.gc.log

リーリー

gc.log を見ると、allocate() メソッドを実行した後も古い領域が 90% 以上占有されており、CMS GC は継続的に実行されていますが、再利用できません。

黄舟
黄舟

人生最曼妙的风景,竟是内心的淡定与从容!

全員に返信(1)
小葫芦

私は最近、あなたに役立つかもしれない 2 つの記事を見ました:

http://zhuanlan.51cto.com/art...
http://zhuanlan.51cto.com/art...

いいねを押す +0
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート