电器工程东莞网站建设seo是什么意思怎么解决
jvm
1. 定义:Java虚拟机(Java virtual machine),一种能够运行Java字节码的虚拟机。
1.1. Java虚拟机包括一套字节码指令集、一组寄存器、一个栈、一个垃圾回收堆和一个存储方法域。
2. jvm基本结构:
2.1. 1 类加载子系统(ClassLoader)
2.1.1. 用来装载.class文件
2.2. 2 运行时数据区(内存结构)
2.2.1. 方法区、堆、java栈、PC寄存器、本地方法栈
2.3. 3 执行引擎:执行字节码,或者执行本地方法
3. 2 JVM运行时数据区
3.1. 第一块:PC寄存器
3.2. 第二块:JVM栈
3.3. 第三块:堆(Heap)
3.4. 第四块:方法区域(Method Area)
3.5. 第五块:运行时常量池(Runtime Constant Pool)
4. 3 类加载器的流程
4.6. 类加载器的加载顺序
4.7. 双亲委派机制
5. 相关面试题
5.1. 1、JRE/JDK/JVM是什么关系
5.2. 2 双亲委派机制是什么?有什么作用?
5.3. 3 Java中垃圾收集的方法有哪些?
5.4. 4 如何判断一个对象是否存活?(或者GC对象的判定方法)
程序计数器:
- jvm基本结构:
- 2 JVM运行时数据区
- 第一块:PC寄存器
- 第二块:JVM栈
- 第三块:堆(Heap)
- 第四块:方法区域(Method Area)
- 1)在Sun JDK中这块区域对应的为PermanetGeneration,又称为持久代。
(2)方法区域存放了所加载的类的信息(名称、修饰符等)、类中的静态变量、类中定义为final类型的常量、类中的Field信息、类中的方法信息,当开发人员在程序中通过Class对象中的getName、isInterface等方法来获取信息时,这些数据都来源于方法区域,同时方法区域也是全局共享的,在一定的条件下它也会被GC,当方法区域需要使用的内存超过其允许的大小时,会抛出OutOfMemory的错误信息。
- 1)在Sun JDK中这块区域对应的为PermanetGeneration,又称为持久代。
- 第五块:运行时常量池(Runtime Constant Pool)
- 第六块:本地方法堆栈(Native Method Stacks)
- 3 类加载器的流程
- 相关面试题
- 1、JRE/JDK/JVM是什么关系
- JRE(JavaRuntimeEnvironment,Java运行环境),也就是Java平台。所有的Java 程序都要在JRE下才能运行。普通用户只需要运行已开发好的java程序,安装JRE即可。
- JDK(Java Development Kit)是程序开发者用来来编译、调试java程序用的开发工具包。JDK的工具也是Java程序,也需要JRE才能运行。为了保持JDK的独立性和完整性,在JDK的安装过程中,JRE也是 安装的一部分。所以,在JDK的安装目录下有一个名为jre的目录,用于存放JRE文件。
- JVM(JavaVirtualMachine,Java虚拟机)是JRE的一部分。它是一个虚构出来的计算机,是通过在实际的计算机上仿真模拟各种计算机功能来实现的。JVM有自己完善的硬件架构,如处理器、堆栈、寄存器等,还具有相应的指令系统。Java语言最重要的特点就是跨平台运行。使用JVM就是为了支持与操作系统无关,实现跨平台。
- 2 双亲委派机制是什么?有什么作用?
- 1、JRE/JDK/JVM是什么关系
①防止加载同一个.class:通过委托去询问上级是否已经加载过该.class,如果加载过了,则不需要重新加载。保证了数据安全。
②保证核心.class不被篡改:通过委托的方式,保证核心.class不被篡改,即使被篡改也不会被加载,即使被加载也不会是同一个class对象,因为不同的加载器加载同一个.class也不是同一个Class对象。这样则保证了Class的执行安全。
年轻代中使用的是Minor GC,这种GC算法采用的是复制算法(Copying)
给对象添加一个引用计数器,每次引用这个对象时计数器加一,引用失效时减一,计数器等于 0 时就是不会再次使用的。不过这个方法有一种情况就是出现对象的循环引用时 GC 没法回收。
这是一种类似于二叉树的实现,将一系列的 GC ROOTS 作为起始的存活对象集,从这个节点往下搜索,搜索所走过的路径成为引用链,把能被该集合引用到的对象加入到集合中。搜索当一个对象到 GC Roots 没有使用任何引用链时,则说明该对象是不可用的。主流的商用程序语言,例如 Java,C#等都是靠这招去判定对象是否存活的。