《深入理解JVM虚拟机》读书笔记
前言:《深入理解JVM虚拟机》是JAVA的经典著作之一,因为内容更偏向底层,所以之前一直没有好好的阅读过。最近因为刚好有空,又有了新目标。所以打算和《构架师的12项修炼》一起看,这样荤素搭配,吃饭不累~
序:
1.如果开发人员不了解虚拟机的一些技术特性的运行原理,就无法写出最适合虚拟机运行和自优化的代码。
第一部分:走近JAVA:
1.虚拟机发展历史
2.自己编译JDK,断点调试运行程序
第二部分:自动内存管理机制
1.程序计数器:字节码解释器工作时就是通过改变这个计数器的值来选取下一条需要执行的字节码指令(debug时也是靠它)
2.每个线程都只会执一条线程中的指令,每条线程都需要有一个独立的程序计数器,各条线程之间的计数器互不影响,独立储存,我们称这类内存区域为“线程私有”的内存。
3.如果线程正在执行的是一个java方法,这个计数器记录的是正在执行的虚拟机字节码指定的地址;如果是native方法,则计数器值为空(undefined)。此内存区域是唯一一个没有内存不够情况的区域。
4.java中的“栈”,一般指的就是JVM中的Java虚拟机栈,或者说是虚拟机栈中局部变量表部分。每个方法在执行的同时都会创建一个栈帧(Stack Frame)用于储存几部变量表、操作数栈、动态链接、方法出口等信息
5.局部变量表所需的内存空间在编译期间完成分配,其中64位长度的long和double类型的数据会占用2个局部变量空间(Slot),其余的数据类型只占用一个。
6.如果现场请求的栈深度大于虚拟机所允许的深度,将抛出stack over flow error 异常(递归调用场景),如果虚拟机栈可以动态扩展(Map),如果扩展时无法申请到足够的内存,就会抛出out of memory error异常
7.本地方法栈与虚拟机栈的作用是非常相似的,区别是一个执行Java方法,一个执行本地native方法。本地方法栈并没有规定的数据结构和使用语言,由具体的虚拟机自由实现。同样会抛出内存溢出和内存不足的异常
8.Java堆(Heap)是Java虚拟机所管理的内存中最大的一块。所有的实例和数组都在它上面分配(随着优化技术的提升,这句话并不绝对了)
9.Java堆可以是物理上不连续的内存空间,也可以扩展。但如果超过上限,还是会报out of memory error。
10.方法区,被当做堆的一个逻辑部分。用来储存虚拟机加载的类信息、常量、静态变量、即时编译器编译后的代码等数据。不同的虚拟机有不同的实现
11.
《深入理解JVM虚拟机》读书笔记的更多相关文章
- csapp读书笔记-并发编程
这是基础,理解不能有偏差 如果线程/进程的逻辑控制流在时间上重叠,那么就是并发的.我们可以将并发看成是一种os内核用来运行多个应用程序的实例,但是并发不仅在内核,在应用程序中的角色也很重要. 在应用级 ...
- CSAPP 读书笔记 - 2.31练习题
根据等式(2-14) 假如w = 4 数值范围在-8 ~ 7之间 2^w = 16 x = 5, y = 4的情况下面 x + y = 9 >=2 ^(w-1) 属于第一种情况 sum = x ...
- CSAPP读书笔记--第八章 异常控制流
第八章 异常控制流 2017-11-14 概述 控制转移序列叫做控制流.目前为止,我们学过两种改变控制流的方式: 1)跳转和分支: 2)调用和返回. 但是上面的方法只能控制程序本身,发生以下系统状态的 ...
- CSAPP 并发编程读书笔记
CSAPP 并发编程笔记 并发和并行 并发:Concurrency,只要时间上重叠就算并发,可以是单处理器交替处理 并行:Parallel,属于并发的一种特殊情况(真子集),多核/多 CPU 同时处理 ...
- 读书笔记汇总 - SQL必知必会(第4版)
本系列记录并分享学习SQL的过程,主要内容为SQL的基础概念及练习过程. 书目信息 中文名:<SQL必知必会(第4版)> 英文名:<Sams Teach Yourself SQL i ...
- 读书笔记--SQL必知必会18--视图
读书笔记--SQL必知必会18--视图 18.1 视图 视图是虚拟的表,只包含使用时动态检索数据的查询. 也就是说作为视图,它不包含任何列和数据,包含的是一个查询. 18.1.1 为什么使用视图 重用 ...
- 《C#本质论》读书笔记(18)多线程处理
.NET Framework 4.0 看(本质论第3版) .NET Framework 4.5 看(本质论第4版) .NET 4.0为多线程引入了两组新API:TPL(Task Parallel Li ...
- C#温故知新:《C#图解教程》读书笔记系列
一.此书到底何方神圣? 本书是广受赞誉C#图解教程的最新版本.作者在本书中创造了一种全新的可视化叙述方式,以图文并茂的形式.朴实简洁的文字,并辅之以大量表格和代码示例,全面.直观地阐述了C#语言的各种 ...
- C#刨根究底:《你必须知道的.NET》读书笔记系列
一.此书到底何方神圣? <你必须知道的.NET>来自于微软MVP—王涛(网名:AnyTao,博客园大牛之一,其博客地址为:http://anytao.cnblogs.com/)的最新技术心 ...
- Web高级征程:《大型网站技术架构》读书笔记系列
一.此书到底何方神圣? <大型网站技术架构:核心原理与案例分析>通过梳理大型网站技术发展历程,剖析大型网站技术架构模式,深入讲述大型互联网架构设计的核心原理,并通过一组典型网站技术架构设计 ...
随机推荐
- Hbuilder安装
---恢复内容开始--- ---恢复内容结束---
- Leetcode480-Sliding Window Median
Median is the middle value in an ordered integer list. If the size of the list is even, there is no ...
- Vue基础进阶 之 Vue生命周期与钩子函数
Vue生命周期 Vue生命周期:Vue实例从创建到销毁的过程,称为Vue的生命周期: Vue生命周期示意图:https://cn.vuejs.org/v2/guide/instance.html#生命 ...
- c++ linux下输出中文
同样,使用的是VS FOR LINUX进行测试. converting to execution character set: Invalid or incomplete multibyte or w ...
- 【题解】Luogu P1533 可怜的狗狗
原题传送门 莫队介绍,Splay介绍 离线的题目,莫队是不错的解决方法 先把询问排一下序 剩下就套一个莫队的板子 每来一只狗就把漂亮值插入平衡树 每去掉一只狗就把漂亮值从平衡树中删掉 每次查询查平衡树 ...
- ldap集成nexus
nexus版本:2.14.4 添加nexus支持ldap认证: 管理员登录,点击 Administration --> Server -->Security Settings,将 OSS ...
- 【Python026--字典内键方法】
一,内键方法 1.fromkeys(...) 语法:dict1.fromkeys(s[,v]):s指的是字典的键值,[,v]指的是可选项(值),[,v]不填写的话默认为none #不填写第二个值,默认 ...
- Eclipse中在xml文件中,ctrl+左键的快捷键,点击class定位,不生效
修改方式: 第一种方式:Window -> Preferences -> General -> Editors -> File Associations ...
- maven 新建项目时报错“Could not calculate build plan: Failure to transfer org.apache.maven.plugins:。。。。。。。。。。。。。。”
首先,我们看到观察这个错误:Failure to transfer org.apache.maven.plugins,这种错误是项目部署时,maven所关联的仓库中插件的设置出错了. 所以我们需要找到 ...
- Bootstrap3基础 list-inline 无序列表横向显示
内容 参数 OS Windows 10 x64 browser Firefox 65.0.2 framework Bootstrap 3.3.7 editor ...