JVM
代码Flying
代码飞扬
展开
-
JVM(一):JVM体系结构详解
JVM简介 JVM是Java程序得以运行的平台,也是Java程序可以跨平台的底层支撑,从整体上来看,JVM的主要功能可以分为加载和执行两大块。其中类加载器负责.class文件的寻址与加载,执行引擎负责字节码指令执行及内存的管理等等。下面是JVM一个经典的体系结构图类加载系统:关于类加载体系的详细说明在另一博客https://blog.csdn.net/w1673492580/ar...原创 2018-09-04 17:46:26 · 5268 阅读 · 0 评论 -
JVM(二):深入理解Java类的加载过程
目录类加载底层原理.class文件寻址规则(双亲委派) .class文件校验 类信息的存储 类对象的创建forName()与 loadClass()的区别 类并发加载问题类加载底层原理从JVM的角度来看,类加载的过程就是查找解析.class文件,并提取其中类信息以某种数据结构存储在方法区中,并在堆内存中创建一个Class对象的过程。细节上又可以分为装载、连接、初始化三个操作,...原创 2018-09-04 17:47:01 · 1024 阅读 · 0 评论 -
JVM(三):自定义ClassLoader 及 类并发加载问题
问题: 目前大部分JVM实现都采用延迟加载的策略,在运行时,当需要用到某个类时才会去真正装载该类。当JVM加载某个类时,会提取出其中的类型信息存储在方法区中,类的静态变量也同样存在该方法区中,虽然JVM内部以什么样的数据结构来存储类型信息,依赖于JVM的具体实现,但从存储的信息基本是一样的,比如类的基本信息(完全限定名称、父类信息、加载器信息等等)、常量池、字段信息、方法信息(签名、字节码流、...原创 2018-09-04 17:47:27 · 2753 阅读 · 0 评论 -
JVM(四):对象与垃圾回收
目录对象创建 对象的引用 无效对象的判断 对象的复活机会 垃圾回收算法 垃圾回收器对象创建(以HotSpot为例) 创建对象在JVM中对应的指令是new,当JVM碰到一个new指令时,会先检查new后面跟着的符号引用(位于常量池,代表类)是否被加载,如果没有,则必须先对类进行加载、连接、初始化等操作,当类被加载后,JVM根据类信息则可以在堆上分配一个适当大小的空间来存储实例...原创 2018-09-12 15:00:12 · 242 阅读 · 0 评论