首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >类加载器是JVM的一部分还是JRE中的一部分?

类加载器是JVM的一部分还是JRE中的一部分?
EN

Stack Overflow用户
提问于 2017-04-07 08:56:31
回答 2查看 1.1K关注 0票数 10

我对java比较陌生,所以如果这个问题看起来很“愚蠢”,请原谅我。我知道 JVM (Java )包含在JRE ()中,但我不确定类加载器和执行引擎是否是的一部分。

我读过的大多数资料来源都没有具体说明这一点。相反,在描述JVM的组件时,他们只讨论了运行时数据区域的5个组件(即堆、JVM堆栈、方法区域、PC寄存器和本机方法堆栈)。虽然我的常识告诉我们,要使它成为一个完整的虚拟机,它需要输入、内存和处理,但我仍然需要验证这些组件的确切位置。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-09-19 11:14:01

基于类加载器维基百科,JRE中有3种类型的类加载器:

  1. 引导类装入器

这个类装入器是核心JVM的一部分,是用本机代码编写的。

  1. 扩展类装入器

它由sun.misc.Launcher$ExtClassLoader类实现。

  1. 系统类装入器

这是由sun.misc.Launcher$AppClassLoader类实现的

因此,我认为结论是:第一个在中,另一个在JRE库中。

  • 还有一些用户定义的类加载器位于不同的地方(如tomcat等)。
票数 2
EN

Stack Overflow用户

发布于 2019-09-19 12:46:08

我认为不可能作出明确的区分。

JRE是一种Java发行版的名称,(顺便说一句) Oracle不再提供它了。

JVM (Java虚拟机)是一个更抽象的术语。它指的是“执行Java程序的东西”。实际上,它由一个用本机代码编写的核心和大量的Java代码组成。但是,虚拟机与支持虚拟机的库和虚拟机运行的“Java的一部分”之间没有明确的界线。

java.lang.Classloader类就是一个很好的例子。其中一些是用Java编写的。其他部分是由JVM本机代码核心提供的本机代码方法。所有其他类装入器类都是extend ClassLoader。有些是标准库的一部分,另一些可能来自第三方库或框架,也可能由应用程序本身实现。

然后是引导类加载器,它完全用本机代码编写,并与ClassLoader的本机代码方法共享代码。

总之,我认为不可能得到一个明确的答案。我不认为试图或成功地在JVM周围划出一条硬线实际上会取得任何成果。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43273876

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档