JVM系列之三:类装载器子系统】的更多相关文章

0. JVM架构图 Java虚拟机主要分为五大模块:类装载器子系统.运行时数据区.执行引擎.本地方法接口和垃圾收集模块. 1. 类的加载 虚拟机类装载器子系统:虚拟机把描述类的数据从class文件加载到内存,并对数据进行校验.转换解析和初始化,最终形成可以被虚拟机直接使用的Java类型. 类的加载指的是将类的.class文件中的二进制数据读入到内存中,将其放在运行时数据区的方法区内,然后在堆区创建一个java.lang.Class对象,用来封装类在方法区内的数据结构.类的加载的最终产品是位于堆区…
类装载器子系统 1.1 什么是类装载子系统? 类装载器子系统负责从文件系统或者网络中加载Class文件,Class文件在文件开头有特定的文件标识(魔数). 类装载器子系统(ClassLoader)只负责Class文件的加载,至于它是否可以运行,则由Execution Engine决定. | 你妈妈[ClassLoader]给你[Execution Engine]找到相亲姑娘,是否能成得看你自己的本事 加载类的信息存放于一块称为方法区的内存空间.除了类的信息外,方法区中还会存放运行时常量池信息,可…
作为一个程序猿,只知道怎么用是远远不够的. 起码,你须要知道为什么能够这么用.即我们所谓底层的东西. 那究竟什么是底层呢?我认为这不能一概而论.以我如今的知识水平而言:对于Web开发人员,TCP/IP.HTTP等等协议可能就是底层:对于C.C++程序猿.内存.指针等等可能就是底层的东西.那对于Java开发人员,你的Java代码执行所在的JVM可能就是你所须要去了解.理解的东西. 我会在接下来的一段时间,和读者您一起去学习JVM,全部内容均參考自<深入理解Java虚拟机:JVM高级特性与最佳实践>…
16年的时候花了一些时间整理了一些关于jvm的介绍文章,到现在回顾起来还是一些还没有补充全面,其中就包括如何利用工具来监控调优前后的性能变化.工具做为图形化界面来展示更能直观的发现问题,另一方面一些耗费性能的分析(dump文件分析)一般也不会在生产直接分析,往往dump下来的文件达1G左右,人工分析效率较低,因此利用工具来分析jvm相关问题,长长可以到达事半功倍的效果来. jvm监控分析工具一般分为两类,一种是jdk自带的工具,一种是第三方的分析工具.jdk自带工具一般在jdk bin目录下面,…
JVM 系列()ClassLoader 在前面一节中,主要介绍了 Class 的装载过程,Class 的装载大体上可以分为加载类.连接类和初始化 3 个阶段.本小节将主要介绍绍 Java 语言中的 ClassLoader,类装载器.它主要工作在 Class 装载的加载阶段从系统外部获得 Class 二进制数据流. 一.ClassLoader ClassLoader 是 Java 的核心组件,所有的 Class 都是由 ClassLoader 进行加载的, ClassLoader 负责通过各种方式…
1. JVM架构图 Java虚拟机主要分为五大模块:类装载器子系统.运行时数据区.执行引擎.本地方法接口和垃圾收集模块. 2. JDK1.7内存模型-运行时数据区域 根据<Java 虚拟机规范(Java SE 7 版)>规定,Java 虚拟机所管理的内存如下图所示. 1-3为线程私有,4-5为线程共享 1.程序计数器:为了线程切换后能恢复到正确的执行位置.线程私有2.Java虚拟机栈:虚拟机栈描述的是Java方法执行的内存模型:方法被调用时创建栈帧-->局部变量表->局部变量.对象…
1.简介 Java平台可分为两部分,即Java虚拟机(Java virtual machine,JVM)和Java API类库. JVM是Java Virtual Machine(Java虚拟机)的缩写,JVM使得Java实现了跨平台. 引入Java语言虚拟机后,Java语言在不同平台上运行时不需要重新编译.Java语言使用Java虚拟机屏蔽了与具体平台相关的信息,使得Java语言编译程序只需生成在Java虚拟机上运行的目标代码(字节码),就可以在多种平台上不加修改地运行. 2. JVM架构图…
JVM系列笔记目录 虚拟机的基础概念 class文件结构 class文件加载过程 jvm内存模型 JVM常用指令 GC与调优 硬件层数据一致性 - 存储器层次结构 从L6-L0 空间由大变小,速度由慢到快. -缓存一致性算法 CPU实现缓存一致性的协议很多,其中intel 使用的MESI(Modified Exclusive Shared Or Invalid)协议.具体可以参考:[MESI--CPU缓存一致性协议](https://www.cnblogs.com/z00377750/p/918…
1.堆内存 堆内存用于存储new对象,垃圾回收器负责堆内存的管理.但Java程序实际占用的空间则由堆内存.栈内存(程序运行栈).程序计数器.常量区.代码区.本地内存等. 堆内存分为Young和Old,Young分为2个Survivor (From Survivor和To Survivor),1个eden,具体见JVM系列-垃圾回收. -Xms??[m|g] 初始堆内存大小,默认为物理内存的1/64,单位是Byte -Xmx??[m|g] 最大堆大小,默认为物理内存的1/4,单位是Byte.虽然程…
DataSnap 2009 系列之三 (生命周期篇) DataSnap 2009的服务器对象的生命周期依赖于DSServerClass组件的设置 当DSServer启动时从DSServerClass组件读取LifeCycle属性的值 注意:LifeCycle的值由于在启动时就已经读取 启动后再修改LifeCycle的值将没有任何效果 LifeCycle属性的值可以是以下三种字符串之一 1.Session 该选项为默认设置 每个连接都会建立一个独立的服务器对象为客户端提供服务,服务器对象在连接关闭…