JVM
ZJE_ANDY
这个作者很懒,什么都没留下…
展开
-
JVM----对象访问定位
目录一、使用句柄访问二、使用直接指针访问三、两种方式的比较建立对象是为了使用对象,而使用对象是通过引用来实现的,而引用(reference)一般是存在JVM栈中的局部变量表中的。由于reference类型在Java虚拟机规范中只规定了一个指向对象的引用,并没有定义这个引用应该通过何种方式去定位、访问堆中的对象的具体地址,所以对象访问方式也是取决于虚拟机实现而定的。目前主流的访问方式有使用句柄和直接指针两种。一、使用句柄访问若是使用句柄访问方法的话,那么在堆内存中就会划分.原创 2020-11-25 21:24:07 · 204 阅读 · 0 评论 -
JVM----方法区和持久代和元空间
Sun/Oracle JDK的HotSpot VM中,直到JDK7都有“持久代”(Permanent Generation,简称PermGen)。也称为方法区。Oracle JDK8的HotSpot VM去掉“持久代”,以“元数据区”(Metaspace)替代之。=======================方法区(逻辑上):是逻辑上的东西,是JVM的规范,所有虚拟机必须遵循的方法区是所有线程共享的,用于存储类的信息、常量池、方法数据、方法代码等。永久代:(属于实现方法区的一个方原创 2020-11-25 16:35:59 · 988 阅读 · 0 评论 -
JVM-------垃圾回收机制(GC)
目录一、什么是垃圾回收机制二、什么是垃圾2.1 引用计数法2.2 根可达法2.2.1虚拟机栈,栈帧中局部变量表中的引用的对象2.2.2本地方法栈,本地方法栈中JNI(即一般说的 Native 方法)引用的对象2.2.3方法区,方法区中类静态属性引用的对象2.2.4方法区,方法区中常量引用的对象三、怎么回收垃圾3.1 标记清除法(Mark-Sweep)3.2 拷贝算法3.3标记压缩(Mark-Compact)四、 什么时候会触发垃圾回收机制...原创 2020-11-17 16:33:16 · 670 阅读 · 0 评论 -
JVM----Java内存模型
目录1.程序计数器2.Java 栈(虚拟机栈)2.1 局部变量表2.2 操作数栈2.3 动态链接2.4 方法返回地址3.本地方法栈4. Java堆5.方法区5.1 运行时常量池静态常量池运行时常量池JVM内存共被分为五个部分:1.程序计数器本质:程序计数器是一块很小的内存空间,它是线程私有的,即每个线程都有属于自己的一个程序计数器。可以作为当前线程的行号指示器。为什么需要程序计数器一条线程中会有多条指令,但对于一个处理器,在同一个时刻,原创 2020-11-15 08:44:38 · 151 阅读 · 0 评论 -
Java 类加载器及其双亲委派机制
一、类加载器是什么Java是运行在Java的虚拟机(JVM)中的,但是它是怎么就运行在JVM中了呢?我们在IDE中编写的Java源代码被编译器编译成.class的字节码文件。然后由我们得ClassLoader(类加载器)负责将这些class文件加载到JVM中去执行。 JVM中提供了三层的ClassLoader:每种类加载器负责加载的类都不同: Bootstrap classLoader:主要负责加载核心的类库(java.lang.*等),构造ExtClassLoader和APPClass.原创 2020-10-16 17:44:30 · 218 阅读 · 1 评论