《深入理解java虚拟机》 - 需要一本书来融汇贯通你的经验(下)
上一章讲到了类的加载机制,主要有传统派的 双亲委派模型 和 现代主义激进派的 osgi 类加载器。接下来继续。
第8章 虚拟机字节码执行引擎
局部变量表,用于存储方法参数和方法内部定义的局部变量。
操作数栈,其实书上解释的糊里糊涂的,个人理解一下,主要是因为cpu寄存器太少,而又要进行各种子方法的调用,那么为了保存外部的一些寄存器值,所以使用了操作数栈。进入子方法的时候,先入栈保存起来,退出时再一个个弹出栈回原来的寄存器。
动态连接,在每一次运行期间转化为直接引用的操作。
基于栈的字节码解释执行。
java中提供了5个方法调用字节码指令,invokestatic 调用静态方法。invokespecial 调用实例构造器<init>方法、私有方法和父类方法 ,invokevirtual 调用所有的虚方法,invokeinterface 调用接口方法,在运行时再确定一个实现此接口的对象,这给我们面向接口编程提供了能力。invokedynamic 先在运行时动态解析出调用点限定符所引用的方法,再执行该方法。javap -c a 可查看字节码。
虚拟机动态分派的实现为,在类的方法区中建立一个虚方法表vtable,使用虚方法表索引来代替元数据查找从而提高性能。
tomcat 类加载器

osgi 类加载器

字节码生成技术和动态代理的实现。
可以使用 retrotranslator 将高版本里写的代码,编译回低版本的运行环境中,原理就是写一些高版本里自代的方法替换到低版本中。
第10章 编译期优化
javac 源码与调试,javac编译器是用java语言实现的,可以直接阅读其源码。
java 语法糖,语法糖就是,表面看起来牛b,实际并没什么卵用的东西。其实主要是为了提高开发效率,以及减少犯错的机会的辅助性语法。如 泛型、自动拆装箱。。。
第11章 运行期优化
运行期的热点代码,将会被编译成平台相关的机器码,从而提高性能。
热点代码分,被多次调用的方法、被多次执行的循环体。
方法计数器触发即时编译;

回边计数器触发即时编译

client compiler 架构

使用 +XX printcompilation可以将编译的方法打印出来。printinlining。-XX : +printcompilation 。
第12章 java内存模型与线程
处理器、高速缓存、主内存间的交互关系

处理器可能会对输入代码进行乱序执行优化。而java虚拟机的即时编译也可能进行指令重排序优化。
java主内存与工作内存的交互关系

java主内存与工作内存的交互协议,定义了8个操作,每一个都是原子性的。
lock 锁定
unlock 解锁
read 读取,和load 连贯操作
load 载入
use 使用
assign 赋值
store 存储,和write 连贯操作
线程的实现,使用内核线程实现,使用用户线程实现,混合实现

使用内核线程

使用用户线程

混合实现
java线程有10优先级, Thread.MIN_PRIORITY, Thread.MAX_PRIORITY,针对windows的7个优先级,做重叠处理。

java线程状态转换
第13章 线程安全与锁优化
不可变的对象一定是线程安全的。
synchronized ,reentrantlock,threadlocalmap。
锁优化,适应性自旋锁 adaptive spinning,锁消除 lock elimination,锁粗化 lock coarsening,轻量级锁 lightweight locking,偏向锁 biased locking。
额。。。
《深入理解java虚拟机》 - 需要一本书来融汇贯通你的经验(下)的更多相关文章
- 深入理解java虚拟机----->垃圾收集器与内存分配策略(下)
1. 前言 内存分配与回收策略 JVM堆的结构分析(新生代.老年代.永久代) 对象优先在Eden分配 大对象直接进入老年代 长期存活的对象将进入老年代 动态对象年龄判定 空间分配担保 2. 垃圾 ...
- 深入理解java虚拟机(7)---线程安全 & 锁优化
关于线程安全的话题,足可以使用一本书来讲解这些东西.<Java Concurrency in Practice> 就是讲解这些的,在这里 主要还是分析JVM中关于线程安全这块的内容. 1. ...
- 深入理解java虚拟机(1)------内存区域与内存溢出
在C++领域,关于C++的内存存储,结构等等,有一本书:深度探索C++对象模型,讲解的非常透彻. 而Java确把这一工作交给了虚拟机来处理. 我们首先来看看关于内存的问题. 1.问题: 1)java ...
- 《深入理解Java虚拟机》虚拟机性能监控与故障处理工具
上节学习回顾 从课本章节划分,<垃圾收集器>和<内存分配策略>这两篇随笔同属一章节,主要是从理论+实验的手段来讲解JVM的内存处理机制.好让我们对JVM运行机制有一个良好的概念 ...
- 《深入理解 java虚拟机》学习笔记
java内存区域详解 以下内容参考自<深入理解 java虚拟机 JVM高级特性与最佳实践>,其中图片大多取自网络与本书,以供学习和参考.
- (1) 深入理解Java虚拟机到底是什么?
好文转载:http://blog.csdn.net/zhangjg_blog/article/details/20380971 什么是Java虚拟机 作为一个Java程序员,我们每天都在写Java ...
- 深入理解java虚拟机(6)---内存模型与线程 & Volatile
其实关于线程的使用,之前已经写过博客讲解过这部分的内容: http://www.cnblogs.com/deman/category/621531.html JVM里面关于多线程的部分,主要是多线程是 ...
- 深入理解java虚拟机(5)---字节码执行引擎
字节码是什么东西? 以下是百度的解释: 字节码(Byte-code)是一种包含执行程序.由一序列 op 代码/数据对组成的二进制文件.字节码是一种中间码,它比机器码更抽象. 它经常被看作是包含一个执行 ...
- 深入理解java虚拟机(4)---类加载机制
类加载的过程包括: 加载class到内存,数据校验,转换和解析,初始化,使用using和卸载unloading过程. 除了解析阶段,其他过程的顺序是固定的.解析可以放在初始化之后,目的就是为了支持动态 ...
- 什么是HotSpot VM & 深入理解Java虚拟机
参考 http://book.2cto.com/201306/25434.html 另外,这篇文章也是从一个系列中得出的: <深入理解Java虚拟机:JVM高级特性与最佳实践(第2版)> ...
随机推荐
- spring mvc 复杂参数注入
过了这么久,又重新把博客拾起来了 来上海工作也已经有将近两周的时间了, 今天在整理项目的时候,遇到了一个关于参数注入的问题 背景: 我的开发前台用的是extjs4,在对后台spring mvc提交表单 ...
- 利用纯CSS美化checkbox和radio和滑动按钮的实现
W3C提供的CheckBox和radio的原始样式非常的丑,而且在不同的额浏览器表现还不一样,使用常规的方法添加样式没法进行修改样式 一, 单选按钮 <html> <head> ...
- YiShop_做一个b2c商城要多少钱
[YiShop商城系统]做一个b2c商城要多少钱?是企业在做一个b2c商城最关心的问题.每个企业都是想用最少的钱做一个好的b2c商城.但企业这种想法可能在现实中是无法实现的.网站这种产品现实中是一分钱 ...
- springMVC使用jsp:include嵌入页面的两种方式
1.静态嵌入子页面 <%@ include file="header.jsp" %> 静态嵌入支持 jsp . html . xml 以及纯文本. 静态嵌入在编译时 ...
- Python笔记·第六章——字典 (dict) 的增删改查及其他方法
字典是python中唯一的映射类型,采用键值对(key-value)的形式存储数据.python对key进行哈希函数运算,根据计算的结果决定value的存储地址,所以字典是无序存储的,且key必须是可 ...
- TRITON恶意软件简单分析与防护方案
一.攻击简介 2017年12月,安全研究人员发现了一款针对工控系统安全仪表系统(SIS)的恶意软件"TRITON",该软件以施耐德电气Triconex安全仪表控制系统为目标展开攻击 ...
- 跟着鬼哥学so改动,二,进行篇
图/文 听鬼哥说故事 继续上文的内容---------------------------------- 0x1:測试文件的编写 经过上一篇文章的基础学习,如今我们開始进行是用的部分. 既然我们能够 ...
- 浅析Spring事务传播行为和隔离级别
7个传播行为.4个隔离级别. Spring事务的传播行为和隔离级别[transaction behaviorand isolatedlevel] Spring中事务的定义: Propagation(k ...
- File attachment or query results size exceeds allowable value of 1000000 bytes.
今天早晨,收到了作业执行失败的邮件(前几天还能正常执行该作业.不知为何今天出错) 邮件显示,作业的第三个步骤报错. step3内容: msdb.dbo.sp_send_dbmail @prof ...
- android面试总结01 activity生命周期
面试常常会被问到的: Q:能说一下Activity的生命周期吗? Activity生命周期例如以下: onCreat onStart onResume onPause onStop onDestory ...