A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© DOOR 中级黑马   /  2014-1-9 01:05  /  1189 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 DOOR 于 2014-1-16 00:38 编辑

求解键盘敲下的每行代码的准确去向,
JVM如何实现运行时数据区的管理(即内存管理)的?从我们写好源程序.java交代给javac命令去编译,虚拟机都做了哪些具体动作?
今天偶然看到.class文件的生成是基于classloader的,这个东西是不是就是编译器?
看视频里只提到虚拟机,除了虚拟机还有哪些组件在起着作用?
是否java的跨平台主要就体现在JVM+字节码文件上?如果是,其他编程语言做同样的事情会有很大难度吗?
抱歉,我问的有点混乱


评分

参与人数 1技术分 +1 收起 理由
田磊阳 + 1

查看全部评分

2 个回复

倒序浏览
classloader是类加载器。。。其他的你问毕老师去
回复 使用道具 举报
本帖最后由 xu6148152 于 2014-1-10 18:59 编辑

这个涉及到更深层次的知识了。跨平台确实主要靠的是虚拟机的运行机制。Java虚拟机会屏蔽与具体平台相关的信息。编译器是javac。

“jvm启动时,会启动jre/rt.jar里的类加载器:bootstrap classloader,用来加载java核心api;然后启动扩展类加载器ExtClassLoader加载扩展类,并加载用户程序加载器AppClassLoader,并指定ExtClassLoader为他的父类;

当类被加载时,会先检查在内存中是否已经被加载,如果是,则不再加载,如果没有,再由AppClassLoader来加载,先从jar包里找,没有再从classpath里找”


回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马