jvm类加载、初始化
2019独角兽企业重金招聘Python工程师标准>>>
jvm类加载
1、通过一个类的全限定名来获取定义此类的二进制字节流;
2、将这个字节流所代表的静态存储结构转化为方法区的运行时数据结构;
3、在java堆中生成一个代表这个类的java.lang.Class对象,作为访问入口;
这里未限定获取二进制流的方式,可以通过各种途径得到,包括jar,war等压缩包、网络、运行时生成(动态代理)、数据库中...等
加载->验证->准备->(解析->初始化)->使用->卸载
验证就不说了...
准备:
这个阶段正式的为类变量分配内存,并设置初始值,内存将分配在方法区中;
必须强调的是这个阶段分配的是类的变量(static),不是实例的变量(分配在堆中);
public static int value =123;
这个阶段分配后value = 0;而不是123;这个阶段尚未执行任何java方法。而把value赋值为123的指令putstatic指令是程序被编译后,存放于类构造器<clinit>()方法中(在初始化阶段,并非是实例构造器(构造函数));然而:
public static final int value = 123;将会在这个阶段设为123(先为0然后是123);
解析:
解析的过程是虚拟机讲常量池内的符号引用替换为直接引用的过程;
触发初始化场景:
1、new关键字
2、使用java.lang.reflect,反射调用;
3、main函数,包含main的类;
4、子类被初始化;
不触发初始化的场景:
1、调用的是父类的静态域;
2、生命某个类的数组,不会触发某个类的初始化;
3、调用某个类的静态字段不会触发当前类的初始化;
参考:《深入理解java虚拟机》
转载于:https://my.oschina.net/u/782865/blog/298316
jvm类加载、初始化相关推荐
- JVM类加载、验证、准备、解析、初始化、卸载过程详解
目录 0 使用类的准备工作 初始化(Init) 1 加载(Load) 1.1 详细过程 1.1.1 通过类全限定名获取该类的二进制字节流 1.1.2 静态存储结构=>运行时数据结构 1.1.3 ...
- JVM基础系列第7讲:JVM 类加载机制
当 Java 虚拟机将 Java 源码编译为字节码之后,虚拟机便可以将字节码读取进内存,从而进行解析.运行等整个过程,这个过程我们叫:Java 虚拟机的类加载机制.JVM 虚拟机执行 class 字节 ...
- jvm类加载机制_面试:对于JVM类加载机制深度解析
目录: 前文回顾 JVM在什么情况下会加载一个类? 从实用角度出发,来看看验证.准备和初始化的过程 核心阶段:初始化 类加载器和双亲委派机制 1.前文回顾 咱们今天先来回顾一下昨天讲到的JVM整体的一 ...
- 【Java虚拟机规范】JVM类加载机制
[Java虚拟机规范]JVM类加载机制 理论知识 一个类型从被加载到虚拟机内存中开始,到卸载出内存为止,它的整个生命周期将会经历加载(Loading).验证(Verification).准备(Prep ...
- jvm类加载机制_JVM 类加载机制
学习导图 一.为什么要学习类加载机制? 今天想跟大家唠嗑唠嗑 Java 的类加载机制,这是 Java 的一个很重要的创新点,曾经也是 Java 流行的重要原因之一. Oracle 当初引入这个机制是为 ...
- JVM类加载机制(ClassLoader)源码解析
http://blog.csdn.net/chenyi8888/article/details/7066569 其实JVM类加载机制,简单地说就是类管理,也就是我们生成的class文件. 三个步骤:装 ...
- JVM(2)——JVM类加载机制
一.JVM类加载机制简介 虚拟机把描述类的数据从Class文件加载到内存,并对数据进行校验.转换解析和初始化,最终形成可以被虚拟机直接使用的Java类型,这就是虚拟机的类加载机制. 在Java语言里面 ...
- JVM类加载机制_字节码执行引擎_Java内存模型
类加载机制: 类加载生命期:加载(Loading),验证(Verification),准备(Preparation),解析(Resolution),初始化(Initialization),使用(Usi ...
- java双缓存机制_详解JVM类加载机制及类缓存问题的处理方法
前言 大家应该都知道,当一个Java项目启动的时候,JVM会找到main方法,根据对象之间的调用来对class文件和所引用的jar包中的class文件进行加载(其步骤分为加载.验证.准备.解析.初始化 ...
最新文章
- OneNote2016安装代码高亮插件-NoteHightlight
- poj2912(种类并查集+枚举)
- Promethus搭建 K8S 集群节点资源监控系统
- iphone9发布_苹果将发布iPhone9!配置升级价格公道,期待官网亮相!
- 3种方法实现http虚拟主机
- Java大数据-Week2-Day2面向对象进阶
- [转载] python 短网址_使用Python生成url短链接的方法
- C++ 訪问控制权限图解
- webform(八)组合查询
- 简单解决网课或教育平台在线学习视频鼠标检测问题
- Calendar中add()和roll()函数的用法
- 嵌入式工程师学习路线(软件类)
- 气象接口返回图标_天气实况API接口一中央气象台直供
- STM32 内部flash 数据掉电存储
- 微信小程序消息推送通知模板id生成获取
- OCR目标识别(车辆VIN码识别效果)
- 如何搭建网站?第二步:购买服务器域名
- 《尚硅谷大数据Hadoop》教程
- 论文阅读:Gradient Harmonized Single-stage Detector
- 如何使用FTP手机/电脑上传文件到服务器
热门文章
- 1.7. FreeBSD 初始化设置
- PHPRAP v1.0.8 版本发布,安装时数据库不存在自动创建
- classmethod和staticmethod
- Quartus16.1布线优化选择,重编译可能会满足时序
- (thinkphp、jQuery)ajax返回json数据
- 熟悉常用的HBase操作
- caffe多个gpu数据合并到一起
- 找区间连续值(HDU5247)
- 加快modelsim仿真速度的方法(原创)
- How to consume AIF service(即WCF service) in SSIS project