目录
答:JVM全称是Java Virtual Machine ,Java 虚拟机。
它是放在Jre运行环境里,将.class后缀的字节码文件解释编译成机器二进制文件的一个东西。
答:日常用JAVA语言写的代码文件是.Java的源文件,经过IDEA或Eclipse等编辑器编译后,编译成.class字节码文件。
JVM再将.class字节码文件解释编译成机器二进制文件,这样即可在各种平台上运行(一次编译,到处运行)。
答:解释执行是JVM一行行代码进行编译,最后翻译成机器码。
编译执行是JVM对整个方法进行编译,最后翻译成机器码。
主流JVM都是混合模式编译的,即两种方法混合用。
答:JVM内存模型根据线程是否共享来分:线程共享区、线程独占区
1、 方法区:存储类的结构信息、常量、静态常量、即时数据等等。
2、 堆:分配的内存最大,存储对象的实例,比如创建对象、New、数据。
3、 栈:栈又称栈内存,栈的生命周期是随线程创建而创建,线程销毁而销毁,所以不会考虑垃圾回收问题。
栈(JVM Stack),里面包含一组栈帧(Stack Frame),栈帧也是一个内存结构。
栈帧存储了,局部变量表、操作栈、动态链接、方法返回地址等。
方法调用执行过程 = 栈帧压栈、出栈的过程。
(转图)
4、 本地方法栈:JVM调用Nativa即本地方法服务。
5、 程序计数器:线程执行行号指示器、计数器。
答:
答:
答: 一共有五步,加载,连接过程(验证,准备,解析),初始化。
JAVA代码经过IEDA等外部编译器编译后,翻译成.class字节码文件。JVM会将字节码文件加载到内存中,即放到运行时数据区的方法区内,对应了内存结构方法区存放类信息这个知识点,在方法区会生成一个java.lang.class对象,作为数据访问入口。
主要是JVM验证这个JAVA类的是否复合规范。其中包括,文件格式验证、元数据验证、字节码验证、符号验证。
主要是为static修饰的变量分配内存、设置初始化数值,比如布尔为false,int为0。不包含final修饰的static,不会为实例变量分配初始值。
主要是把JVM常量池的符号引用转换为直接引用。
主要是为static修饰的静态变量,分配自定义的值,比如public static int a=1
答:
双亲委派机制:无论哪个加载器加载一个类,最终都会将该类抛给父类加载器去加载,如果父类加载器加载失败,再返回给子类加载器。
本文地址:https://blog.csdn.net/weixin_43168480/article/details/107437063
如对本文有疑问, 点击进行留言回复!!
HashMap、Hashtable、ConcurrentHashMap三者间的异同
解决RecycleView 中Item包含Edittext时,滑动view复用导致数据错乱的问题
多线程、同步工作原理、死锁案例、Lock接口、线程的生命周期的讲解及实现
网友评论