2012-03-13 19 views
2

可能性の重複:クラスがJVMによってロードされたときに丁度(メモリ管理の面で)何が起こるかを理解するために探し
static allocation in java - heap, stack and permanent generationメモリ割り当て

。具体的には:

  • 実際にどのクラスのバイトコードがロード/配置されていますか?
  • 静的変数がロード/配置されるメモリの部分はどれですか?
  • 他のどの変数とメソッドがロード/配置されていますか?
+0

この質問は回答済みです[こちら](http://stackoverflow.com/a/3849819/964592)。 –

答えて

0

まず、クラスを含むバイト配列がPermGenにロードされます。

クラスのバイト配列が解析され、解析された情報もPermGenに配置されます。

次に、クラス内の文字列が内部化され(PermGenに配置されます)。

クラスが初期化されると、すべての静的変数インスタンスがヒープに配置されます。

関数が特定のしきい値よりも頻繁に呼び出されると、JITコンパイルされた関数のコードがPermGenに配置されます。

これはすべてAFAIKでなければなりませんが、私はJVM開発者ではありません。