jvm面试2 jvm如何加载java代码? JVM知识重点:内存模型和GC
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相关推荐
- Android工程师进阶第一课 夯实Java基础 JVM内存模型和GC回收机制
开篇词:跳出舒适区,走在Android行业的前端 你好,我是姜新星,一个深耕 Andorid 领域的老工程师. 记得 2010 年毕业典礼上,某位老师说"你们是最幸福的一届毕业生,正好赶上中 ...
- java gc内存_Java内存模型和GC机制
最近学习Python的GC机制时,想到了java的GC,忘得差不多了,(⊙﹏⊙)b!!这里便做一下回顾总结.推荐周志明译本的<深入理解Java虚拟机>. 1. Java内存模型 1.1 程 ...
- java虚拟机预先加载哪些类_Java虚拟机JVM学习02 类的加载概述
Java虚拟机JVM学习02 类的加载概述 类的加载 类的加载指的是将类的.class文件中的二进制数据读入到内存中,将其放在运行时数据区的方法区内,然后在堆区创建一个java.lang.Class对 ...
- java加载并运行虚拟机_《深入理解Java虚拟机》- Java虚拟机是如何加载Java类的?...
Java虚拟机是如何加载Java类的? 这个问题也就是面试常问到的Java类加载机制.在年初面试百战之后,菜鸟喜鹊也是能把这流程倒背如流啊!但是,也只是字面上的背诵,根本就是像上学时背书考试一样. ...
- Java 内存模型和 JVM 内存结构真不是一回事
这两个概念估计有不少人会混淆,它们都可以说是 JVM 规范的一部分,但真不是一回事!它们描述和解决的是不同问题,简单来说, Java 内存模型,描述的是多线程允许的行为 JVM 内存结构,描述的是线程 ...
- Java虚拟机是如何加载Java类的?
前言 从 class 文件到内存中的类,按先后顺序需要经过加载.链接.初始化三大步骤.链接过程需要验证:而内存中的类没有经过初始化,同样不能使用. Java 语言的类型可以分为两大类:基本类型(pri ...
- java内存 海子_Java虚拟机:JVM内存模型和volatile详解
JVM内存模型和volatile详解 Java内存模型 随着计算机的CPU的飞速发展,CPU的运算能力已经远远超出了从主内存(运行内存)中读取的数据的能力,为了解决这个问题,CPU厂商设计出了CPU内 ...
- win7ie11调用java失败,win7纯净版系统下ie11无法加载java插件
在win7纯净版系统中,我们会使用系统自带IE11浏览器来上网,最近有用户在使用IE11上网的时候无法加载java插件,导致网页无法全部显示,我们碰到这个问题应该怎么解决呢?下面给大家讲解一下win7 ...
- linux firefox applet,在HTTPS上的Firefox中加载Java Applet
我们开发了一个分析应用程序,它使用特殊的Java小程序(由IBM开发)来查看一些数据.这是一个在Apache上运行的Django应用程序.一切工作正常,直到我们转移到SSL.这种行为非常奇怪,我们感到 ...
最新文章
- 害怕离职,侧面说明大多数是离职了没人要的废物?
- 从代理机制到Spring AOP
- 每日一皮:修Bug的真实情况...
- tomcat8配置tomcat-users.xml不生效
- 第一百七十二节,jQuery,动画效果
- P5502 [JSOI2015]最大公约数(gcd性质/min性质/分治)
- 前端学习(1423):ajax错误处理
- 外媒确认iPhone 13 Pro系列采用120Hz OLED面板:支持智能调节屏幕刷新率
- Guice Aop 与 Hasor Aop 原理及其实现
- [C++]用VC++来设置获得注册表的键值(问题解决)
- 没有计算机基础可以学python-Python的学习,都需要具备哪些计算机基础知识?
- 机器学习笔记(三十):基尼系数、CART
- 双系统、多系统快速切换
- 《亲自动手写一个深度学习框架》-专题视频课程-广州市老刘
- 【JAVA程序设计】基于JavaWeb技术的医疗管理系统-有报告
- 人工智能行业每日必读(02·04)
- 拼多多新手商家开直通车一定要避免的雷区有哪些?
- js中的eval语法
- [附源码]SSM计算机毕业设计校园新闻管理系统JAVA
- 20165231 预习作业3 linux安装及学习