Java専門のQ&Aサイト SUKEGRA

悩めるプログラマーを「ッターン!」と助太刀!

Java 1.7のHashMap に関しての質問です.


投稿者:匿名 投稿日時: 2014年11月25日
カテゴリー:
機能・関数について
タグ:

Java 1.7のHashMap に関しての質問です.質問は2つあります.
Rehashする際,どうやらsun.misc.VM.isBooted() というものを確認しているみたいです.
質問の一つ目は,このBootedをするとどのようなことがJava内で起こるか,ということです.

次の質問です.このVMがいつBootされるかに関して,
initializeSystemClass()が呼び出されている場合,Booted されるみたいです.
このinitialazeSystemClassとは,いつ呼び出されるのでしょうか.
質問が多く,申し訳ありません.よろしくお願い致します.


0 支持

ログインまたはユーザー登録してから回答してください。

回答 1

投稿者:匿名 投稿日時: 2016年4月6日

System.initializeSystemClass

Java のクラスアンロード
http://www.nminoru.jp/~nminoru/java/class_unloading.html

クラスHashMap<K,V>
HashMapクラスはHashtableと同じとみなしてもかまいませんが・・・

rehash メソッドがいつ呼び出されるか、および呼び出されるかどうかは、実装により異なり・・・
http://docs.oracle.com/javase/jp/7/api/java/util/Hashtable.html

その部分がinitializeSystemClassメソッドなわけです。このメソッドはJVMの初期化ルーチンの中のThread周りの初期化が終わった時点で呼び出されます。
http://d.hatena.ne.jp/ytetsuwo/20110816

Invoked by by System.initializeSystemClass just before returning.
http://www.docjar.com/html/api/sun/misc/VM.java.html

package sun.misc;
public class VM

156 public static void booted() {
157 booted = true;
158 }
159
160 public static boolean isBooted() {
161 return booted;
162 }
163
164

http://grepcode.com/file/repository.grepcode.com/java/root/jdk/openjdk/7u40-b43/sun/misc/VM.java

public class: VM
public static boolean isBooted()

  {
    return booted;

}
http://www.docjar.com/docs/api/sun/misc/VM.html

...