jvm如何加载java代码? native方法forName0

JVM知识重点:内存模型和GC’

注意:jvm是一个内存中的虚拟机


下面是Class类中,我们常用的forName方法

 @CallerSensitivepublic static Class<?> forName(String className)throws ClassNotFoundException {Class<?> caller = Reflection.getCallerClass();return forName0(className, true, ClassLoader.getClassLoader(caller), caller);}
   //在进行系统加载程序访问检查的安全检查后调用/** Called after security check for system loader access checks have been made. */private static native Class<?> forName0(String name, boolean initialize,ClassLoader loader,Class<?> caller)throws ClassNotFoundException;

谈谈反射

java的反射机制是指,在运行状态中,对于任意一个类,我们可以知道他所有方法和所有属性,而对于任意一个对象来说,我们可以任意调用他的任意方法和任意属性;这种动态获取信息和动态调用对象方法的功能叫做Java语言的反射机制。

Java的反射机制是指:Java代码在运行过程中,对于任意一个类来说,我们可以完全知道该类的所有方法以及该类的所有属性, 而对于任意一个对象来说,我们可以任意调用他的所有方法和获取他的所有属性,我们把这种能够在程序运行中,能够动态获取信息和动态调用对象的功能叫做Java语言的反射机制。

请你写一个反射的例子 Class ,Method, Field

package com.interview.javabasic.reflect;public class Robot {private String name;public void sayHi(String helloSentence){System.out.println(helloSentence + " " + name);}private String throwHello(String tag){return "Hello " + tag;}static {System.out.println("Hello Robot");}
}
package com.interview.javabasic.reflect;import java.lang.reflect.Field;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;public class ReflectSample {public static void main(String[] args) throws ClassNotFoundException, IllegalAccessException, InstantiationException, InvocationTargetException, NoSuchMethodException, NoSuchFieldException {Class rc = Class.forName("com.interview.javabasic.reflect.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");System.out.println(System.getProperty("java.ext.dirs"));System.out.println(System.getProperty("java.class.path"));}
}

简而言之,反射就是将类的各个模块,映射成 Class Method Field 的对象

jvm面试2 jvm如何加载java代码? JVM知识重点:内存模型和GC相关推荐

  1. Android工程师进阶第一课 夯实Java基础 JVM内存模型和GC回收机制

    开篇词:跳出舒适区,走在Android行业的前端 你好,我是姜新星,一个深耕 Andorid 领域的老工程师. 记得 2010 年毕业典礼上,某位老师说"你们是最幸福的一届毕业生,正好赶上中 ...

  2. java gc内存_Java内存模型和GC机制

    最近学习Python的GC机制时,想到了java的GC,忘得差不多了,(⊙﹏⊙)b!!这里便做一下回顾总结.推荐周志明译本的<深入理解Java虚拟机>. 1. Java内存模型 1.1 程 ...

  3. java虚拟机预先加载哪些类_Java虚拟机JVM学习02 类的加载概述

    Java虚拟机JVM学习02 类的加载概述 类的加载 类的加载指的是将类的.class文件中的二进制数据读入到内存中,将其放在运行时数据区的方法区内,然后在堆区创建一个java.lang.Class对 ...

  4. java加载并运行虚拟机_《深入理解Java虚拟机》- Java虚拟机是如何加载Java类的?...

    Java虚拟机是如何加载Java类的?  这个问题也就是面试常问到的Java类加载机制.在年初面试百战之后,菜鸟喜鹊也是能把这流程倒背如流啊!但是,也只是字面上的背诵,根本就是像上学时背书考试一样. ...

  5. Java 内存模型和 JVM 内存结构真不是一回事

    这两个概念估计有不少人会混淆,它们都可以说是 JVM 规范的一部分,但真不是一回事!它们描述和解决的是不同问题,简单来说, Java 内存模型,描述的是多线程允许的行为 JVM 内存结构,描述的是线程 ...

  6. Java虚拟机是如何加载Java类的?

    前言 从 class 文件到内存中的类,按先后顺序需要经过加载.链接.初始化三大步骤.链接过程需要验证:而内存中的类没有经过初始化,同样不能使用. Java 语言的类型可以分为两大类:基本类型(pri ...

  7. java内存 海子_Java虚拟机:JVM内存模型和volatile详解

    JVM内存模型和volatile详解 Java内存模型 随着计算机的CPU的飞速发展,CPU的运算能力已经远远超出了从主内存(运行内存)中读取的数据的能力,为了解决这个问题,CPU厂商设计出了CPU内 ...

  8. win7ie11调用java失败,win7纯净版系统下ie11无法加载java插件

    在win7纯净版系统中,我们会使用系统自带IE11浏览器来上网,最近有用户在使用IE11上网的时候无法加载java插件,导致网页无法全部显示,我们碰到这个问题应该怎么解决呢?下面给大家讲解一下win7 ...

  9. linux firefox applet,在HTTPS上的Firefox中加载Java Applet

    我们开发了一个分析应用程序,它使用特殊的Java小程序(由IBM开发)来查看一些数据.这是一个在Apache上运行的Django应用程序.一切工作正常,直到我们转移到SSL.这种行为非常奇怪,我们感到 ...

最新文章

  1. 害怕离职,侧面说明大多数是离职了没人要的废物?
  2. 从代理机制到Spring AOP
  3. 每日一皮:修Bug的真实情况...
  4. tomcat8配置tomcat-users.xml不生效
  5. 第一百七十二节,jQuery,动画效果
  6. P5502 [JSOI2015]最大公约数(gcd性质/min性质/分治)
  7. 前端学习(1423):ajax错误处理
  8. 外媒确认iPhone 13 Pro系列采用120Hz OLED面板:支持智能调节屏幕刷新率
  9. Guice Aop 与 Hasor Aop 原理及其实现
  10. [C++]用VC++来设置获得注册表的键值(问题解决)
  11. 没有计算机基础可以学python-Python的学习,都需要具备哪些计算机基础知识?
  12. 机器学习笔记(三十):基尼系数、CART
  13. 双系统、多系统快速切换
  14. 《亲自动手写一个深度学习框架》-专题视频课程-广州市老刘
  15. 【JAVA程序设计】基于JavaWeb技术的医疗管理系统-有报告
  16. 人工智能行业每日必读(02·04)
  17. 拼多多新手商家开直通车一定要避免的雷区有哪些?
  18. js中的eval语法
  19. [附源码]SSM计算机毕业设计校园新闻管理系统JAVA
  20. 20165231 预习作业3 linux安装及学习

热门文章

  1. AOP的XML架构、AOP的@AspectJ
  2. 常用的数学计算工具类
  3. JAVA设计模式 - 工厂方法模式
  4. js parseInt()和Number()区别
  5. 构建springmvc+dubbo分布式平台-dubbo简介
  6. Vue.js 2.x笔记:指令(4)
  7. 捕获系统异常崩溃的方法
  8. 认识:人工智能AI 机器学习 ML 深度学习DL
  9. Struts2的struts.xml的配置细节
  10. 模式窗口showModalDialog的用法总结