jvm

来源:互联网 发布:js面向对象教程 编辑:程序博客网 时间:2024/06/08 09:46

关于jvm的一些小问题

  • java和其他语言有什么区别?
    答:java是一个纯软件平台,可以跨平台使用。jvm把java文件编译成.class文件可以跨平台使用,每当一个java程序都会生成jvm实例,只有当程序运行结束后,这个jvm才会退出。jvm通过调用main方法来启动java程序,这个main方法必须是public,stacic ,void并且该方法必须接受一串字符串数组参数只有同时满足才能够运行。
public static void main(String[] args)public static final void main(String[] args)static public void main(String[] args)static public synchronized void main(String[] args)
  • jvm加载class文件的原理机制是什么?
    答:java是一中动态性的解析语言,class只要被加载到jvm中才能运行。类加载器是一个类,实际上就是把类文件从硬盘上读到内存中。加载分为隐士加载和显示加载。
    隐士加载:new一个实例来加载对象
    显示加载:class.forName()
    加载是动态的,它并不是一次性加载所有的类而是需要的时候才加载到jvm中。
 Bootstrap Loader  -负责加载系统类(jre/lib/rt.jar 类)                        |                ----ExxClassLoader  -负责加载扩展类                            |                        --AppClassLoader  -负责加载应用类

加载是父类委托机制先加载父类如果找不到在加载子类。
类的加载分为3步:

  1. 装载。根据查找路径找到对应的class文件
  2. 链接。
    ❶检查。检查待加载的类是否正确
    ❷准备。给类的静态变量分配存储空间
    ❸解析。将符号引用转换为直接引用
  3. 初始化。对静态变量和静态代码块执行初始化工作
原创粉丝点击