黑马程序员技术交流社区
标题: 关于虚拟机 [打印本页]
作者: DOOR 时间: 2014-1-9 01:05
标题: 关于虚拟机
本帖最后由 DOOR 于 2014-1-16 00:38 编辑
求解键盘敲下的每行代码的准确去向,
JVM如何实现运行时数据区的管理(即内存管理)的?从我们写好源程序.java交代给javac命令去编译,虚拟机都做了哪些具体动作?
今天偶然看到.class文件的生成是基于classloader的,这个东西是不是就是编译器?
看视频里只提到虚拟机,除了虚拟机还有哪些组件在起着作用?
是否java的跨平台主要就体现在JVM+字节码文件上?如果是,其他编程语言做同样的事情会有很大难度吗?
抱歉,我问的有点混乱
作者: 午夜b'Boy 时间: 2014-1-10 17:31
classloader是类加载器。。。其他的你问毕老师去
作者: xu6148152 时间: 2014-1-10 18:55
本帖最后由 xu6148152 于 2014-1-10 18:59 编辑
这个涉及到更深层次的知识了。跨平台确实主要靠的是虚拟机的运行机制。Java虚拟机会屏蔽与具体平台相关的信息。编译器是javac。
“jvm启动时,会启动jre/rt.jar里的类加载器:bootstrap classloader,用来加载java核心api;然后启动扩展类加载器ExtClassLoader加载扩展类,并加载用户程序加载器AppClassLoader,并指定ExtClassLoader为他的父类;
当类被加载时,会先检查在内存中是否已经被加载,如果是,则不再加载,如果没有,再由AppClassLoader来加载,先从jar包里找,没有再从classpath里找”
| 欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) |
黑马程序员IT技术论坛 X3.2 |