首页 > 编程语言 > 详细

java JVM 学习笔记一虚拟机的体系结构

时间:2016-06-16 02:10:36      阅读:337      评论:0      收藏:0      [点我收藏+]

JVM java 的虚拟机.从来没有深入的研究过。这几天有时间看看网上的帖子,在自己理解做下笔记。

?

java虚拟机的体系结构:

当一个ClassLoad启动的时候,ClassLoad首先将硬盘上的class文件读取后,放入JVM的方法区,

JVM 会产生一个new A()的对象放在JVM 的堆区。

?

字节码会产生两个引用,一个指向加载自己的ClassLoad,一个指向JVM 创建的new对象。

作图如下:


bubuko.com,布布扣
?A文件的字节码包含的信息如下:


bubuko.com,布布扣
?用代码看看JVM 如何加载一个类:

先写一个类:

public class ProcessJvm {
    public void showStatus() {
        System.out.println("I am runing.....");
    }
    
    public int showNumber(int x){
        return x+10;
    }
}

?调用,用反射调用类的方法,含参数的方法就是调用不成,感觉有问题??

public class Studyjvm {
    public static void fileProcess(){
        try {
            URL[] urls = new URL[]{new URL("file:/E:/IntelliJWorkSpace/javaThink/out/javaThink/")};
            URLClassLoader classLoader = new URLClassLoader(urls);
            Class c = classLoader.loadClass("jvm.ProcessJvm");
            System.out.println("classesName:"+c.getPackage());
            Method m = c.getMethod("showNumber");
            Object o = c.newInstance();
            m.invoke(o);

            //这里想调用含参数的showNumber(int x) 方法怎么调用都不对,为什么??
//            Object oo = c.newInstance();
//            Method me = c.getMethod("showNumber",Integer.class);
//            
//            Object x = me.invoke(oo,10);
//            System.out.println("x:==-=="+x);
//            
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

?

java JVM 学习笔记一虚拟机的体系结构

原文:http://resunly.iteye.com/blog/2304667

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!