首页 > 编程语言 > 详细

Java底层知识:JVM

时间:2020-03-14 18:35:02      阅读:58      评论:0      收藏:0      [点我收藏+]

一、JVM如何加载.class文件

  • ClassLoader:依据特定格式,加载class文件到内存
  • Execution Engine:对命令进行解析
  • Native Interface:融合不同开发语言的原生库为Java所用
  • Runtime Data Area:JVM内存空间结构模型

二、反射的概念

Java反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意方法和属性;这种动态获取信息以及动态调用对象的功能称为Java语言的反射机制

反射的例子

package javabasic;

public class Robot {
    private String name;
    public void sayHi(String helloSentence) {
        System.out.println(helloSentence+" "+name);
    }
    private String throwHello(String tag) {
        return "Hello"+tag;
    }
}
package javabasic;

import java.lang.reflect.Field;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;

public class reflect {
    public static void main(String[] args) throws ClassNotFoundException, InstantiationException, IllegalAccessException, NoSuchMethodException, SecurityException, IllegalArgumentException, InvocationTargetException, NoSuchFieldException {
        Class rc = Class.forName("javabasic.Robot");
        Robot r = (Robot)rc.newInstance();
        System.out.println("Class name is "+rc.getName());
        Method getHello = rc.getDeclaredMethod("throwHello", String.class);
        getHello.setAccessible(true);
        Object str = getHello.invoke(r, "Bob");
        System.out.println("getHello result is "+str);
        Method sayHi = rc.getMethod("sayHi", String.class);
        sayHi.invoke(r, "Welcome");
        Field name = rc.getDeclaredField("name");
        name.setAccessible(true);
        name.set(r, "Alice");
        sayHi.invoke(r, "Welcome");
    }
}

三、ClassLoader的种类

BootStrapClassLoader:加载Java核心API

ExtClassLoader:加载扩展API

AppClassLoader:加载classpath下的class

自定义ClassLoader

技术分享图片

 

四、类加载器的双亲委派机制

 技术分享图片

 

 

五、类的加载方式

隐式加载:new

显示加载:loadClass,forname

技术分享图片

 

 

技术分享图片

 

 六、Java内存模型

技术分享图片

 

 技术分享图片

 

技术分享图片

 

Java底层知识:JVM

原文:https://www.cnblogs.com/-2016/p/12493384.html

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