2014-09-30 2 views
-1

Я недавно разработал необходимость понимания того, что происходит в виртуальной машине Java, и я искал какие-то документы или учебники, которые могли бы объяснить такие вещи, как:JVM Описание Жизненного цикла

  • Каких темы создаются на старте, и почему?
  • Как GC обычно обрабатывает память, что отвечает за GC и как она вписывается в стандарты JVM?
  • Как JVM обрабатывает различные типы invoke * opcodes? Как он выполняет поиск метода?
  • Как организована область метода, что там точно хранится? Как работают стеки методов с областями методов?
  • Как JVM обрабатывает потоки, готовит и выполняет?

Я знаю, что он будет отличаться для разных реализаций, но я возьму все материалы, которые вы мне дадите. Что-то более близкое к коду, чем общий обзор архитектуры. Есть люди, которые знают классный sh * t, и я не знаю, где его найти. Я знаю, что этот вопрос может показаться наивным :)

+0

Это много вопросов. Здесь есть некоторые сведения о виртуальной машине: http://docs.oracle.com/javase/specs/jvms/se7/html/jvms-2.html. GC - еще один вопрос – doctorlove

ответ

0
1) JVM boots up and setups up the various memory areas that the GC 
will be managing, it will also setup some system threads 
2)Look the jar file manifest to determine the class that has the main method to load 
3)Load the main class and verify that the byte code in the just loaded class is correct and not doing anything illegal. 
4)resolve what classes are needed by the class being loaded and load those classes each class being loaded goes through step 3 and 4 
5)Find the the byte code for the main method and execute it. 

This is just a brief description 

You can find everydetail in the book Inside the Java Virtual Machine 
2nd Edition 
0

Какие темы создаются на старте, и почему?

Я предлагаю вам взять дамп потока простой программы и google каждого из имен потоков. Большинство из них вам ничего не нужно знать.

Как GC, как правило, обрабатывает память, что отвечает за GC и как она вписывается в стандарты JVM?

GC несет ответственность за очистку памяти, которая больше не ссылается на свободное пространство. Он должен делать это эффективным образом.

Как JVM обрабатывает различные типы invoke * opcodes? Как он выполняет поиск метода?

Если вам когда-либо понадобится понять, что именно они делают, я предлагаю вам прочитать о них в спецификации. До тех пор я бы предположил, что если вы думаете, что вам нужно знать, что они делают, вы делаете что-то неправильно.

Как организована методическая область, что там точно хранится?

У вас есть куча, стеки, пермский ген/метапас, прямая память, файлы с отображением памяти и разделяемые библиотеки.

Основной один беспокоиться о том, Куча, где хранятся объекты и, возможно, Пермь Gen для кода для Java < = 7.

Как метод стеки работают с методом областей?

Стек растет каждый раз, когда вы делаете фактический звонок. Если вызов вложен, он может уменьшиться или вообще не измениться.

Как JVM обрабатывает потоки, подготавливает и выполняет?

Это не так. ОС и процессор выполняют всю реальную работу.

Я недавно разработал необходимость понимания того, что происходит в виртуальной машине Java

Существует много можно узнать, но если у вас есть использование для него, который, вероятно, будет около 1%, вы будете забудь это. Я предлагаю вам сосредоточиться на более конкретных проблемах и информации, которые непосредственно полезны. например существует более 500 вариантов Java, но мало кто знает, что они делают. Вам может понадобиться знать только 5, не глядя на них.

Смежные вопросы