JVM包含哪些功能?

5
JVM的功能是什么?我所知道的只有以下几点:
- JIT编译器 - 垃圾回收器(GC) - 内存分配器
当你加载Java应用程序时,它会执行哪些步骤?
我很好奇,因为如果我将Java应用程序的加载时间与以下步骤进行比较:
- 在LLVM上初始化本机目标 - 一些GC初始化 - 一些Qt/GTK/其他初始化 - 应用程序的某些JIT/预编译部分 - 应用程序自身的初始化
对我来说,JVM加载时间比执行上述步骤要长得多。那么除此之外,它还做了什么?

3
阅读过规范了吗? - Tim Stone
我不认为这个问题应该被点踩,它是一个非常有趣的问题。 - Amir Afghani
2个回答

2

这实际上是一个非常有趣的问题 - 为了自己验证,运行一个Hello World程序并在Java可执行文件中加入选项-XX:-TraceClassLoading。


我尝试了 java -verbose:gc -XX:-TraceClassLoading JavaHelloWorld 但它只输出了 Hello World。我有什么遗漏吗? - Albert
3
这是一个Java虚拟机参数,用于追踪类加载的过程。 - Stephen C
嗯,这似乎只是向我展示JVM加载了哪些类(数量非常多)。但在此之前JVM本身正在做什么呢?并且有什么东西可以从中剥离出来吗?因为在我的看来,它似乎几乎不需要出现在那里的任何东西。 - Albert

1

它从头开始引导整个JVM。这需要一些时间。


引导程序看起来是什么样子? - Albert
使用“-verbose”标志来查看每个类在类加载器中被拉入的情况。你可能会感到惊讶... - Thorbjørn Ravn Andersen

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接