JVM笔记——类加载
1.在java代码中,类型(如class enum interface)的加载、连接、初始化过程都是在程序运行期完成的。这个特性,使得本为静态语言的java,拥有了动态语言的某些特征
加载:查找并加载类的二进制数据
类的加载指的是将类的.calss文件中的二进制数据读入内存,将其放置在运行时数据区的方法区内,然后创建一个java.lang.Class对象(规范没说明这个Class对象要放在哪里,HotSpot虚拟机将其放在了方法区内),用来封装类在方法区内的数据结构。
ps:一个类的所有实例,均对应一个Class对象,就是这里生成的,类加载其实加载的就是这里生成的Class对象
连接:梳理类与类之间的调用,把符号引用转为真正的引用,并且校验字节码的正确性等,具体功能:
a.验证:确保被加载类的正确性
b.准备:为类的静态变量分配内存,并且将其初始化为 默认值
c.解析:把类中的符号引用转为直接引用
初始化:为类的静态成员变量赋予正确的初始值
ps:另外2阶段
使用:
卸载:把类从内存中去掉,卸载之后,该类不能再被使用,但是可以重新加载后再使用(使用不多,OSGI在使用)
2.java里的类从硬盘加载到内存中,是由类加载器来完成的
3.java虚拟机在以下情况将结束生命周期
(1)执行了System.exit()方法
(2)程序正常结束了
(3)程序在执行的过程中遇到异常或者错误,导致异常终止
(4)由于底层操作系统错误导致异常终止
4.对类的使用方式分为:主动使用、被动使用
详细介绍见 http://blog.csdn.net/mweibiao/article/details/79516708
JVM笔记——类加载的更多相关文章
- JVM学习笔记——类加载过程
JVM学习笔记——类加载过程 类加载模型——双亲委派模型(Parents Delegation Model)也可称为“溯源委派加载模型” Java的类加载器是一个运行时核心基础设施模块,主要是启动之初 ...
- JVM学习笔记——类加载和字节码技术篇
JVM学习笔记--类加载和字节码技术篇 在本系列内容中我们会对JVM做一个系统的学习,本片将会介绍JVM的类加载和字节码技术部分 我们会分为以下几部分进行介绍: 类文件结构 字节码指令 编译期处理 类 ...
- JVM学习笔记——类加载器与类加载过程
类加载器与类加载过程 类加载器ClassLoader 类加载器 ClassLoader 用于把 class 文件装载进内存. 启动类加载器(Bootstrap ClassLoader): 这个类加载使 ...
- 0032 Java学习笔记-类加载机制-初步
JVM虚拟机 Java虚拟机有自己完善的硬件架构(处理器.堆栈.寄存器等)和指令系统 Java虚拟机是一种能运行Java bytecode的虚拟机 JVM并非专属于Java语言,只要生成的编译文件能匹 ...
- JVM笔记五-堆区
JVM笔记五-堆区 在JVM中,堆区是重中之重.通过前面文章的学习,我们知道了,栈区是不会有垃圾回收的,所以,经常说的垃圾回收,其实就是回收的是堆区的数据.在这里,我们将会看到传说中的,新生代.老年代 ...
- JVM:类加载与字节码技术-2
JVM:类加载与字节码技术-2 说明:这是看了 bilibili 上 黑马程序员 的课程 JVM完整教程 后做的笔记 内容 这部分内容在上一篇笔记中: 类文件结构 字节码指令 编译期处理 类加载阶段 ...
- JVM:类加载与字节码技术-1
JVM:类加载与字节码技术-1 说明:这是看了 bilibili 上 黑马程序员 的课程 JVM完整教程 后做的笔记 内容 类文件结构 字节码指令 下面的内容在后续笔记中: 编译期处理 类加载阶段 类 ...
- JVM学习一:JVM之类加载器概况
18年转眼就3月份都快结束了,也就是说一个季度就结束了:而我也因为年前笔记本坏了,今天刚修好了,那么也应该继续学习和博客之旅了.今年的博客之旅,从JVM开始学起,下面我们就言归正传,进入正题. 一.J ...
- JVM的类加载
一.基本类加载机制介绍 大体引用一下<深入理解Java虚拟机>一书中对类加载的定义:虚拟机将描述类的二进制字节流(即Class文件)加载到内存中,并对其进行验证.准备.解析.初始化,最终 ...
随机推荐
- django 不使用序列化器时进行查询结果序列化
在app01views中添加 class User1(View): def post(self,request): user=User.objects.all() list=[] for i in u ...
- 【.Net Core】开源项目源码--门户网站--精神科医院官网
项目简介 此项目是一个实际开发招投标项目,汕头大学精神卫生中心.一个门户网站,因为没有投标上所以把源码公开出来分享. Github地址: https://github.com/simawenbo12/ ...
- buu学习记录(上)
前言:菜鸡误入buu,差点被打吐.不过学到了好多东西. 题目名称: (1)随便注 (2)高明的黑客 (3)CheckIn (4)Hack World (5)SSRF Me (6)piapiapia ( ...
- apache、nginx、Tomcat、IIS引擎解析漏洞
引擎解析漏洞 常见的web容器有IIS.Apache.Nginx.Tomcat等,以下是详细讲解 IIS IIS简介 是 ...
- 【APIO2020】交换城市(Kruskal重构树)
Description 给定一个 \(n\) 个点,\(m\) 条边的无向连通图,边带权. \(q\) 次询问,每次询问两个点 \(x, y\),求两点间的次小瓶颈路.不存在输出 -1. Hint \ ...
- hadoop技术产生
一.为什么有大数据 我的理解是: 1)数据量达到了传统数据库的瓶颈 2)数据量的激增 3)硬件成本的降低 [ 技术水平的上升 ] 4)想通过大量的数据发现潜在的商业价值 二.什么是大数据 大数据指的是 ...
- win 7 MongoDB 下载安装
准备: 1.mongodb-win32-x86_64-2008plus-ssl-3.4.3-signed.msi 官方下载 2.1.建立数据存放目录 F:\MongoDB\ 2.建立日志文件 ...
- Day10 python高级特性-- 生成器 Generator
列表生成式可以创建列表,但是受内存限制,列表容量时有限的,创建一个巨量元素的列表,不仅占用很大的存储空间,当仅仅访问前几个元素时,后面的绝大多数元素占用的空间都被浪费了. 如果list的元素可以按照算 ...
- 四、LoadRunner11安装和破解
之前安装了LoadRunner12 社区版的,应为满足不了工作需求, 上网仔细查了教程下来LoadRunner11破解版 链接:https://pan.baidu.com/s/1dM8Lwf4p160 ...
- mysql 5.7全备脚本
#!/bin/bash mysql_user="root" mysql_password="mysqlpassword" mysql_host="19 ...