![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
JVM虚拟机
文章平均质量分 92
虚拟机知识
农夫阿才
认真的人,自带光芒!
展开
-
面试 1:简述JVM的内存布局
文章目录1. 我的回答 1. 我的回答 JVM内存布局分两块:线程共享和非线程共享。线程共享区域有堆区、方法区;非线程共享区有程序计数器、方法栈、本地方法区。 堆区:当对象被创建时,就在堆中开辟相应的内存空间,用来存储对象中的非静态成员变量,指向方法区的方法描述。这里是垃圾回收的区域。 方法区:类的class字节码加载到此区域中,并开辟相应的静态空间。 程序计数器:记录栈帧中方法执行的字节码指令...原创 2020-02-19 22:46:47 · 159 阅读 · 0 评论 -
深入理解JVM(4)
文章目录01 ClassLoader的JAVADOC文档解析02 自定义类加载器深入03一张图搞定04 案例代码 01 ClassLoader的JAVADOC文档解析 读ClassLoader的Javadoc 二进制名 JAVADOC 注意:locale指的是类似String这样的类,而generate指的是动态代理生成的这种。 解释为什么会有classloader class类中的引用以...原创 2020-02-19 22:45:14 · 145 阅读 · 0 评论 -
深入理解JVM(2)
本文目录如下01 接口初始化规则02 类加载准备阶段和初始化阶段代码分析 01 接口初始化规则 接口中只能有常量以及抽象方法,即使没有static final修饰也会默认加上。所以除非是运行期常量,否则该变量直接就在编译阶段放到了调用该常量的方法所在的类的常量池中。 例1: package com.test02; public class Test01 { public static vo...原创 2019-05-24 10:49:04 · 133 阅读 · 0 评论 -
深入理解JVM(3)
文章目录01 类加载器与类初始化的深度剖析02 不同类加载器作用与加载动作分析03 获得ClassLoader的途径 01 类加载器与类初始化的深度剖析 案例1 运行结果 把final去掉可以,出现静态代码块中的结果,主动使用中的一种。 在final的前提下,如果是 Random 则运行期才能确定,依旧会输出 static 块 反编译 案例2 运行结果 +XX:+TraceC...原创 2019-05-24 11:07:59 · 124 阅读 · 0 评论 -
深入理解JVM(1)
大多数 JVM 将内存区域划分为 Method Area(Non-Heap)(方法区),Heap(堆),Program Counter Register(程序计数器), VM Stack(虚拟机栈,也有翻译成JAVA 方法栈的),Native Method Stack (本地方法栈),其中Method Area和Heap是线程共享的,VMStack,Native Method Stack 和Program Counter Register是非线程共享的。为什么分为线程共享和非线程共享原创 2019-04-29 10:53:34 · 295 阅读 · 0 评论