当前位置: 首页 > 后端技术 > Java

Java培训:JVM架构

时间:2023-04-01 16:23:01 Java

JVM由哪些区域组成?它由一个类加载器和一个运行时数据区组成;运行时数据区分为两个区域:线程私有和线程共享。线程私有区包括程序计数器、虚拟机栈和本地方法栈,线程共享区包括堆和方法区。.类加载器的作用是什么?加载类文件,生成类的结构信息,存放在方法区。类加载器有哪几种,它们之间的关系是什么?BootstrapClassLoader,加载lib下的类;ExtensionClassLoader,加载扩展类,即jre/ext下的类;ApplicationClassLoader,加载用户编写的类;也可以继承ClassLoader类来自定义类加载器。ApplicationClassLoader是ExtensionClassLoader的子类,ExtensionClassLoader又是BootstrapClassLoader的子类。双亲委派机制是什么?简单的说,当你要加载一个类时,首先找到自己的父类来加载它。比如java培训机构要加载A.class,ApplicationClassLoader会先找到它的父类,也就是ExtensionClassLoader,而ExtensionClassLoader会先找到自己的父类,也就是BootstrapClassLoader。如果没有加载,它会告诉ExtensionClassLoader,没有加载,轮到ApplicationClassLoader加载。这就是双亲委托机制,可以保证JDK自己的类先被加载。类加载过程是怎样的?加载:将类文件加载到内存中;验证:验证类文件的正确性;准备:为类中的静态变量分配空间;解析:将类常量池中的符号引用替换为直接引用;初始化:初始化静态变量和静态代码块。说说你对栈内存的理解?栈内存是线程私有的一块区域,分为虚拟机栈和本地方法栈。基本类型的变量、对象的引用变量、实例方法都是在栈上分配的。栈的内存地址是连续的,没有垃圾回收。本地方法栈类似于虚拟机栈,只是本地方法栈是为本地方法服务的。程序计数器的作用是什么?记录程序执行的位置。当程序调用其他方法、循环、递归时,下次返回到哪里执行,由程序计数器记录。方法区是物理分区吗?方法区用于存放类加载器生成的类的结构信息。它是一种逻辑划分,一种规范,而不是具体的实现。jdk1.7对方法区的实现称为永久代,存在于堆内存中;jdk1.8对方法区的实现称为metaspace,共享物理内存。堆内存你了解多少?堆是JVM中最大的区域,存放数组和对象。分为新生代和老年代,内存比例为1:2。新生代分为Eden区,from区,to区。这三个区域的内存比例为8:1:1。对象诞生在新生代的伊甸园区,经过几次垃圾回收达到年龄的对象会被存放在老年代。文章来自java开发那些事

猜你喜欢