1、java的平台无关性是如何实现的?
Java源码首先被编译成字节码,再由不同平台的JVM进行解析,Java语言在不同的平台上运行时不需要进行重新编译,Java虚拟机在执行字节码文件的时候,把字节码转换成具体平台上的机器指令。
2、JVM如何加载class文件
Class Loader:依据特定格式,加载class文件到内存中
Execution Engine(解释器):对命令进行解析
Native Interface:融合不同开发语言的原生库为java所用
Runtime Data Area:JVM内存空间结构模型
3、什么是反射
Java反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法,对于任意一个对象,都能调用它的任意方法和属性,这种动态获取信息以及动态调用对象方法的功能称为java语言的反射机制。
实现反射的方法:
1、Class.forName(“xxx”)
4、谈谈ClassLoader
一、类从编译到执行的过程
1、编译器将Robot.java源文件编译为Robot.class字节码文件
2、ClassLoader将字节码转换为JVM中的Class对象
3、JVM利用Class对象实例化为Robot对象
二、ClassLoader的概念
classLoader在java中有着非常重要的作用,它主要工作在class装载的加载阶段,其主要作用是从系统外部获得class二进制数据流。它是java的核心组件,所有的class都是由ClassLoader进行加载的,ClassLoader负责通过将Class文件里的二进制数据量装载进系统,然后交给java虚拟机进行连接,初始化操作等。
三、ClassLoader的种类:
1、BootStrapClassLoader
2、ExClassLoader
3、AppClassLoader
4、自定义ClassLoader
5、谈谈类加载器的双亲委派机制
为什么需要使用双亲委派机制去加载类?
1、避免多份同样字节码的加载
2、安全
6、Java的内存模型
1、程序计数器
2、java虚拟机栈
3、堆
4、方法区
5、本地方法栈
JVM三大性能调优参数-Xms -Xmx -Xss的含义