2014-09-30 86 views
-1

我最近开发了一个需要了解正在发生的事情JVM和我一直在寻找一些文件或教程可以解释的东西,如:JVM生命周期描述

  • 什么上正在开始,为什么创建的线程?
  • GC如何处理内存,GC负责什么以及它如何适应JVM标准?
  • JVM如何处理不同类型的调用*操作码?它如何执行方法查找?
  • 方法区域是如何组织的,那里存储的是什么?方法堆栈如何与方法区域一起工作?
  • JVM如何处理线程,准备和执行?

我知道它会因不同的实现而有所不同,但我会采取任何材料,你会给我。比一般的体系结构更接近代码。有些人知道酷sh * t,我不知道在哪里找到它。我知道,这个问题可能听起来天真:)

+0

这是很多问题 - 这里有一些关于虚拟机的细节:http://docs.oracle.com/javase/specs/jvms/se7/html/jvms-2.html。 GC是另一个问题 – doctorlove 2014-09-30 15:28:06

回答

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

上正在开始,为什么创建线程是什么?

我建议你带一个简单程序的线程转储和谷歌的每个线程名称。他们中的大多数人不需要知道任何关于。

GC如何处理内存,GC负责什么以及它如何适应JVM标准?

GC负责清理不再被称为释放空间的内存。它应该以有效的方式来完成。

JVM如何处理不同类型的调用*操作码?它如何执行方法查找?

如果您需要了解这些做什么,我建议您在规范中阅读它们。在此之前我会假设,如果你认为你需要知道这些做什么,那么你做错了什么。

方法区域是如何组织的,什么是完全存储在那里?

您有堆,堆栈,Perm Gen/Metaspace,直接内存,内存映射文件和共享库。

其中主要的一个担心就是对象存储堆和可能的烫发根代码的Java < = 7

如何方法栈与方法方面的工作?

每次进行实际呼叫时堆栈都会增加。如果呼叫被内联,它可能会减少,或者根本不增加。

JVM如何处理线程,准备和执行?

它没有。操作系统和CPU完成所有实际工作。

我最近开发了一个需要了解什么在JVM发生

有很多,你可以学习,但除非你有一个使用它这很可能是1%左右,你会算了吧。我建议你专注于更直接有用的更具体的问题和信息。例如有超过500个Java选项,但很少有人知道他们都做了什么。你可能只需要知道5而不必查看它们。