《深入理解Java虚拟机-第3版》知识点总结

以下内容纯属个人扯淡,仅供参考,建议拜读原著

目录

读后感

第一部分:走近Java

第1章:Java概述

第二部分:自动内存管理

第2章:Java内存区域与内存溢出异常

第3章:垃圾收集器与内存分配策略

第4章:虚拟机性能监控与故障处理工具

第5章:调优案例分析与实战

第三部分:虚拟机执行子系统

第6章:类文件结构

第7章:虚拟机类加载机制

第8章:虚拟机字节码执行引擎

第9章:类加载及执行子系统的案例与实战

第四部分:程序编译与代码优化

第10章:早期(编译期)优化

第11章:晚期(运行期)优化

第五部分:高效并发

第10章:Java内存模型与线程

第11章:线程安全与锁优化


 

读后感

第一部分:走近Java

第1章:Java概述

概览

 

 

1、实战:自己编译JDK

 

第二部分:自动内存管理

第2章:Java内存区域与内存溢出异常

对于Java程序员来说,在虚拟机自动内存管理机制的帮助下,不容易出现内存泄漏与内存溢出问题。但正因如此,一旦出现泄漏/泄漏问题,若不了解虚拟机是怎么样使用内存的,那排查错误将非常困难。

1、运行时数据区域

参考:Java内存区域(运行时数据区域)和内存模型(JMM)

JDK8之后

JDK8之前

1》程序计数器

2》Java虚拟机栈与本地方法栈

3》Java堆

1)对象堆

2)方法区

3)运行时常量池

方法区的一部分。Class文件中除了有类的版本、字段、方法、接口等描述信息外,还有一项常量池表(存放编译时期生成的各种字面量与符号引用)

 

4》直接内存

不是虚拟机运行时数据区、Java虚拟机规范中定义的。但JDK1.4中加入了NIO(基于通道与缓冲区的IO方式。它可以使用Native函数库直接分配堆外内存,然后通过一个存储在Java堆中的DirectByteBuffer对象作为这块内存的引用进行操作。可以避免在Java堆和Native堆中来回复制数据,提高性能)

它的分配将受到本机总内存(物理内存、SWAP分区、分页文件等)、处理器寻址空间的限制。当-Xmx等设置各个区域总和大于物理或OS限制时,从而导致动态扩展时出现OOM

 

 

第3章:垃圾收集器与内存分配策略

第4章:虚拟机性能监控与故障处理工具

第5章:调优案例分析与实战

第三部分:虚拟机执行子系统

第6章:类文件结构

1、Class类文件结构

一组以8位字节(1Byte=8bit)为基础单位的二进制流,各个数据项目严格按顺序紧密排列。它采用类似C语言结构体的伪结构来存储(一个结构体类型可以只由基本类型构成,结构体中还可以有结构体),只有2种数据类型:无符号数、表

无符号数:基本数据类型。u1、u2、u4、u8,数字代表字节数。可以用来描述数字、索引引用、数值、UTF-8字符串值
    u1:max = 255
    u2:max = 65535
    ...
表:多个无符号数或其他表作为数据项的复合数据类型。约定以:_info结尾

注意:描述同一类型但数量不定的多个数据时,一般使用一个前置的容量计数器加若干个连续数据项的形式,也称为某一类型的集合

注意:Class结构并非像xml等描述型语言,它没有分隔号,因此上图中的数据项无论是顺序、数量都是被严格限定的,哪个字节代表什么含义,长度多少,先后顺序等都不允许改变(上图中,除去数量=1的,剩下的数据项可能可能会连续有多个)

1。魔数

u4 magic 1

固定为:0xCAFEBABE。由于确定该文件是否为一个能被虚拟机接受的Class文件(因为文件扩展名是可以随意被改动的,因此使用扩展名来区分文件类是不安全的)

2。版本号

u2 minor_version 1
u2 major_version 1

依次是次和主版本号。高版本jdk能兼容低版本class文件,但不能运行更高版本的。jdk8=52

3。常量池

u2      constant_pool_count   1
cp_info constant_pool         constant_pool_count

 

它与其他项关联最多,也是占用Class文件空间最大的数据项之一

注意:constant_pool_count值从1开始,0表示不引用任何一个常量池项目

第7章:虚拟机类加载机制

第8章:虚拟机字节码执行引擎

第9章:类加载及执行子系统的案例与实战

第四部分:程序编译与代码优化

第10章:早期(编译期)优化

第11章:晚期(运行期)优化

第五部分:高效并发

第10章:Java内存模型与线程

第11章:线程安全与锁优化

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值