本文仅作为复习清单使用 类生命周期 加载 验证 准备 解析 初始化 使用 卸载 常量优化 常量传播 常量折叠 类的加载 通过全限定名获取二进制字节流 将静态存储结构转化为方法区的运行时数据结构 生成Class对象 验证过程(可关闭) 文件格式验证 元数据验证 字节码验证 符号引用验证 准备 分配内存 ...
分类:
编程语言 时间:
2020-03-28 13:11:09
阅读次数:
73
本文仅作为复习清单使用 运行时数据区域 线程私有 :程序计数器,JAVA虚拟机栈,本地方法栈 线程共享 :堆,方法区,运行时常量池,直接内存 内存分配方式 指针碰撞 空闲列表 本地线程分配缓冲 堆在某种程度上,也存在线程私有的部分哦 对象的内存布局 对象头 : Mark word,类型指针 实例数据 ...
分类:
编程语言 时间:
2020-03-27 01:09:37
阅读次数:
73
常见的JAVA虚拟机HotSpot虚拟机运行时数据库由5部分构成:方法区,堆,虚拟机栈,本地方法栈,程序计数器。下面列举各个部分可能出现的异常及其出现原因。 1.方法区存放的已被虚拟机加载的类型信息,常量、静态变量、即时编译器编译后的代码缓存等数据。可能出现的异常有OutOfMemoryError, ...
分类:
编程语言 时间:
2020-03-23 00:16:03
阅读次数:
91
一、前言 之前过年在家,空闲时间比较多,想要了解一下 相关的内容,于是买了《深入理解Java虚拟机》这本书,过了一遍其中的基础知识。时隔多日,都忘得差不多了。为了重新捡起来,我决定复习一遍,并编写相关的系类博文加深印象,这是第一篇,来讲一讲 最基础的内容—— 的内存模型。 二、正文 2.1 Java ...
分类:
编程语言 时间:
2020-03-15 19:10:25
阅读次数:
84
类加载器的命名空间 每个类加载器又有一个命名空间, 类加载器的命名空间的作用和影响 + 每个类加载器又有一个命名空间,由其以及其父加载器组成 + 在每个类加载器自己的命名空间中不能出现相同类名的类 (此处值得是类的全名,包含包名) + 在不同的类命名空间中,可能会出现多个相同的类名的类 如下面的代码 ...
分类:
编程语言 时间:
2020-03-02 10:53:32
阅读次数:
71
1. 类加载器的分类 1. JVM 自带的类加载器 根类加载器( BootStrap ) 拓展类加载器 ( Extension ) 系统 (应用) 加载器 ( System / AppClassLoader) 2. 开发者自己创建的类加载器 java.long.ClassLoader 的子类 2. ...
分类:
编程语言 时间:
2020-03-01 12:53:04
阅读次数:
76
类的初始化过程 类的加载过程.png + 加载 将 Class 文件以二进制的形式加载到内存中 + 验证 校验 Class 文件是否安全,是否被正确的修改等 + 准备 为类变量申请内存,设置默认值,(初始化变量的默认值,比如int初始化为0,reference初始化为null) 但是达到类的初始化之 ...
分类:
编程语言 时间:
2020-03-01 12:27:08
阅读次数:
75
https://blog.csdn.net/soonfly/article/details/70147205 在翻《深入理解Java虚拟机》的书时,又看到了2-7的 String.intern()返回引用的测试。其实要搞明白String.intern(),我总结了下面几条规则:一、new Strin ...
分类:
其他好文 时间:
2020-02-19 23:48:23
阅读次数:
86
前提 这篇文章主要基于JDK11的源码和最近翻看的《深入理解Java虚拟机 2nd》一书的部分内容,对JDK11中的 (引用)做一些总结。值得注意的是,通过笔者对比一下JDK11和JDK8对于 包的相关实现,发现代码变化比较大, 因此本文的源码分析可能并不适合于JDK11之外的JDK版本 。 Ref ...
分类:
其他好文 时间:
2020-02-07 01:32:02
阅读次数:
62
OOM 异常 (OutOfMemoryError) OOM 异常 (OutOfMemoryError) Java 堆溢出 Java 虚拟机栈和本地方法栈溢出 方法区和运行时常量池溢出 直接内存溢出 Java 堆溢出 出现标志:java.lang.OutOfMemoryError: Java heap ...
分类:
编程语言 时间:
2020-02-01 19:47:03
阅读次数:
109