JVM虚拟机阅读笔记
来源:互联网 发布:2016中国域名备案后缀 编辑:程序博客网 时间:2024/04/29 06:25
第五章——案例调优
在一台物理机器上启动多个应用服务器进程,每个服务器进程分配不同端口,然后在前端搭建一个负载均衡器,以反向代理的方式来分配访问请求。
第六章——类文件结构
大端:最高位字节在地址最低位、最低位字节在地址最高位
高版本的JDK能向下兼容以前版本的Class文件,但不能运行以后版本的Class文件,即使文件格式并未发生改变,虚拟机也必须拒绝执行超过其版本号的Class文件。
紧接着主版本号的是常量池入口,常量池可以理解为Class文件之中的资源仓库。
常量池中主要存放两大类常量:字面量(Literal),符号引用(Symbolic Reference)。
字面量比较接近于Javay语言层面的常量概念。如文本字符串,声明为final的常量值等。
而符号引用则属于编译原理方面的概念。包括了以下三类常量:
- 类和接口的全限定名(Fully Qualified Name)
- 字段的名称和描述符(Description)
- 方法的名称和描述
在Class文件中不会保存各个方法、字段最终内存的布局信息,因此这些字段、方法的
符号引用不经过运行期转换的话无法得到真正的内存入口地址,也就无法直接被
虚拟机使用。当虚拟机运行时,需要从常量池获得对应的符号引用,再在类创建时或运行时解析、
翻译到具体的内存地址之中。字段表(field info)用于描述接口或者类中声明的变量。字段包括类级变量以及实例级变量,
但不包括在方法内部声明的局部变量。类构造器()方法和实例构造器()的区别:
- 对于非static类型的变量(也就是实例变量)的赋值实在实例构造器方法中进行的。
- 对于类变量,则有两种方式可以选择:
i. 如果同时使用final 和 static 来修饰一个变量,并且这个变量的数据类型是基本类型或者
java.lang.String的话,就生成ConstantValue属性来进行初始化。
ii. 如果这个变量没有被final修饰,
或者并非基本类型及String,则将会选择在方法中进行初始化。java虚拟机直接支持宽化类型转换,即小范围类型向大范围类型的安全转换。相对的,窄化类型转化时,
必须显示地使用转换指令来完成,窄化类型转换可能会导致转换结果产生不同的正负号、不同的数量级的情况,
转换过程很可能会导致数值的精度丢失。方法调用(分派、执行过程):
- invokevirtual 指令用于调用对象的实例方法,根据对象的实际类型进行分派(虚方法分派),
这也是Java语言中最常见的方法分派方法。- invokeinterface 指令用于调用接口方法,它会在运行时搜索一个实现了这个接口方法的对象,
找出适合的方法进行调用。- invokespecial 指令用于调用一些特殊处理的实例方法,包括实例初始化方法、私有方法和父类方法。
- invokestatic 指令用于调用类方法(static方法)
- invokedynamic 指令用于在运行时动态解析出调用点限定符所引用的方法,并执行该方法,前面4条调用指令的分派
逻辑都固化在java虚拟机内部,而invokedynamic指令的分派逻辑是由用户所设定的引导方法决定的。
第七章——虚拟机类加载机制
- JVM虚拟机阅读笔记
- JVM(Java虚拟机)笔记
- 深入java虚拟机阅读笔记(jvm内存原理、异常处理部分)
- JVM内存详解-阅读笔记
- 【JVM规范笔记一】JVM虚拟机结构
- Java虚拟机JVM学习笔记
- 深入JVM学习笔记-虚拟机体系结构
- jvm开发笔记3---java虚拟机雏形
- jvm开发笔记5 - 虚拟机内存管理
- JVM 学习笔记---Java虚拟机栈
- JVM学习笔记---Java虚拟机栈
- JVM相关笔记(深入理解Java虚拟机)
- jvm笔记5--虚拟机类加载机制
- java的JVM(java虚拟机)学习笔记
- jvm笔记05:虚拟机类加载机制
- 【JVM笔记】虚拟机中类型描述符
- Java学习笔记 --- JVM(Java虚拟机)
- JVM学习笔记(1)-虚拟机内存
- python使用dom操作xml
- 暑期赛c题 存储历史状态的树状数组+二分
- jquery ajax 内容
- android数据库持久化框架
- 设计模式-行为型- 迭代器模式(Iterator)
- JVM虚拟机阅读笔记
- android stuido WebView 如何本地加载html
- 网易笔试编程题:最少时间落入陷阱(C++)
- Windows下Nexus 5的Android 5.0以上版本官方ROM的刷机教程
- TabLayout的简单使用
- 第二篇《iOS中使用AFNetWorking时如何将responseObject传出》
- Java8新特性——Lambda表达式(一)
- php支持八种原始类型:
- Hibernate之一对多(注解实现)