2022
04-30
04-30
java虚拟机JVM类加载机制原理(面试必问)
目录1、类加载的过程。1)加载2)验证3)准备4)解析5)初始化2、Java虚拟机中有哪些类加载器?1)启动类加载器(BootstrapClassLoader):2)扩展类加载器(ExtensionClassLoader):3)应用程序类加载器(ApplicationClassLoader):3、什么是双亲委派模型?4、为什么使用双亲委派模式?5、有哪些场景破坏了双亲委派模型?1)线程上下文类加载器2)Tomcat的多Web应用程序6、为什么要破坏双亲委派模型?7、如何破坏双亲委...
继续阅读 >
目录1.介绍下Java内存区域(运行时数据区)。程序计数器(ProgramCounterRegister)Java虚拟机栈(JavaVirtualMachineStacks)本地方法栈(NativeMethodStack)Java堆(JavaHeap)方法区(MethodArea)运行时常量池(RuntimeConstantPool)2.怎么判定对象已经“死去”?引用计数法可达性分析算法3.介绍下四种引用(强引用、软引用、弱引用、虚引用)?4.垃圾收集有哪些算法,各自的特点?标记-清除算法复制算法标记...
JVM常用命令行参数1.查看参数列表虚拟机参数分为基本和扩展两类,在命令行中输入JAVA_HOME\bin\java就可得到基本参数列表。在命令行输入JAVA_HOME\bin\java?X就可得到扩展参数列表。2.基本参数说明:-client,-server:两种Java虚拟机启动方式,client模式启动比较快,但是性能和内存管理相对较差,server模式启动比较慢,但是运行性能比较高,windos上采用的是client模式,Linux采用server模式-classpath-cp:虚...
在谈JVM内存区域划分之前,我们先来看一下Java程序的具体执行过程,我画了一幅图。Java源代码文件经过编译器编译后生成字节码文件,然后交给JVM的类加载器,加载完毕后,交给执行引擎执行。在整个执行的过程中,JVM会用一块空间来存储程序执行期间需要用到的数据,这块空间一般被称为运行时数据区,也就是常说的JVM内存。所以,当我们在谈JVM内存区域划分的时候,其实谈的就是这块空间——运行时数据区。大家应该对官...
Java与C++之间有一堵由内存分配和垃圾收集技术所围成的高墙,墙外面的人想进去,墙里面的人却想出来。一、概述Java堆和方法区这两个区域有着很显著的不确定性:1、一个接口的多个实现类需要的内存可能会不一样,一个方法所执行的不同条件分支所需要的内存也可能不一样2、只有处于运行期间,我们才能知道程序究竟会创建哪些对象,创建多少个对象,这部分内存的分配和回收是动态的垃圾收集器所关注的正是这部分的内存该如何管理二、...
和java堆一样,方法区是一块所有线程共享的内存区域,用于保存系统的类信息,类的信息有哪些呢。字段、方法、常量池。方法区也有一块内存区域所以方法区的内存大小,决定了系统可以包含多少个类,如果系统类太多,方法区内存不够肯定会导致方法区溢出,虚拟机同样会抛出内存溢出信息。(内存溢出后面相关文章给大家总结)jdk6和jdk7中,方法区可以理解为永久区(Perm).永久区可以使用参数-XX:PermSize和-XX:MaxPermSize制定。默认情况...