这是why技术的第34篇原创文章 本周还是在家办公的一周,上面的图就是我在家的工位,和上周<Dubbo Cluster集群那点你不知道的事>这篇文章里面的第一张图片比起来,升级了显示器支撑臂,如果短还可以加长:用上了机械键盘,让指尖享受那一点点来自红轴的美妙反馈...... 还是那句话:工欲善其事,必先利其器.在家办公,我是认真的. 图中显示器下面的两本书分别是<深入理解Java虚拟机>的第2版和第3版.也就是本文的主角. 你的手边有第2版吗? 来,翻到第57页.这里面有个“坑”,…
最近在读,附上网盘链接 复制这段内容后打开百度网盘手机App,操作更方便哦 链接:https://pan.baidu.com/s/1U6yFeZxz9uD6sSiu-Br06g 提取码:3Wt4…
这是why的第 47 篇原创文章 荒腔走板 大家好,我是 why.老规矩,先是简短的荒腔走板聊聊生活. 上面的图是前几天拍的,那天晚上下班后,刚刚走进小区就看到了这一轮弯月和旁边那一颗特别特别亮的星星. 不知道为什么,一瞬间,我感觉一下回到了小时候的夏天. 脑海里浮现出了一些画面:一个大铁勺子舀一勺透心凉的井水.经过水缸冰镇的西瓜.树荫下卖樱桃的老爷爷.小河边嬉笑着抓螃蟹的同伴.提着一杯凉白开走在上学路上的自己,还有傍晚在顶楼纳凉的邻居们. 我小时候是在筒子楼长大的,一栋楼 7 层高,每一层住…
郑重声明:本片博客是学习<深入理解java虚拟机>一书所记录的笔记,内容基本为书中知识. Java程序最初是通过解释器(Interpreter)进行解释执行的,当虚拟机发现某个方法或代码块的运行特别频繁时,就会把这些代码认定为"热点代码",为了提高热点代码的执行效率,在运行时, 虚拟机将会把这些代码编译成与本地平台相关的机器码,并进行各种层次的优化,完成这个任务的编译器称为即时编译器,即时编译器编译性能的好坏. 代码优化程度的高低却是衡量一款商用虚拟机优秀与否的最关键的指标…
深入理解Java虚拟机(字节码执行引擎) 本文首发于微信公众号:BaronTalk 执行引擎是 Java 虚拟机最核心的组成部分之一.「虚拟机」是相对于「物理机」的概念,这两种机器都有代码执行的能力,区别是物理机的执行引擎是直接建立在处理器.硬件.指令集和操作系统层面上的,而虚拟机执行引擎是由自己实现的,因此可以自行制定指令集与执行引擎的结构体系,并且能够执行那些不被硬件直接支持的指令集格式. 在 Java 虚拟机规范中制定了虚拟机字节码执行引擎的概念模型,这个概念模型成为各种虚拟机执行引擎的统…
文章首发于微信公众号:BaronTalk,欢迎关注! 对于性能和效率的追求一直是程序开发中永恒不变的宗旨,除了我们自己在编码过程中要充分考虑代码的性能和效率,虚拟机在编译阶段也会对代码进行优化.本文就从虚拟机层面来看看虚拟机对我们所编写的代码采用了哪些优化手段. 一. 早期优化(编译期优化) Java 语言的「编译期」其实是一段「不确定」的操作过程.因为它可能是一个前端编译器(如 Javac)把 *.java 文件编译成 *.class 文件的过程:也可能是程序运行期的即时编译器(JIT 编译器…
深入理解Java虚拟机(类文件结构) 欢迎关注微信公众号:BaronTalk,获取更多精彩好文! 之前在阅读 ASM 文档时,对于已编译类的结构.方法描述符.访问标志.ACC_PUBLIC.ACC_PRIVATE.各种字节码指令等等许多概念听起来都是云山雾罩.一知半解,原因就在于对类文件结构和类加载机制不够了解.直到后来细读了<深入理解 Java 虚拟机>中虚拟机执行子系统的相关内容,才建立了清晰的认知.如果你也和我一样,不了解类结构和类加载,但是工作中又涉及到字节码相关内容,相信后面两篇文章…
文章首发于公众号:BaronTalk 书籍真的是常读常新,古人说「书读百遍其义自见」还是很有道理的.周志明老师的这本<深入理解 Java 虚拟机>我细读了不下三遍,每一次阅读都有新的收获,每一次阅读对 Java 虚拟机的理解就更进一步.因而萌生了将读书笔记整理成文的想法,一是想检验下自己的学习成果,对学习内容进行一次系统性的复盘:二是给还没接触过这部好作品的同学推荐下,在阅读这部佳作之前能通过我的文章一窥书中的精华. 原想着一篇文章就够了,但写着写着就发现篇幅大大超出了预期.看来还是功力不够,…
文章首发于微信公众号:BaronTalk 上一篇文章我们介绍了「类文件结构」,这一篇我们来看看虚拟机是如何加载类的. 我们的源代码经过编译器编译成字节码之后,最终都需要加载到虚拟机之后才能运行.虚拟机把描述类的数据从 Class 文件加载到内存,并对数据进行校验.转换解析和初始化,最终形成可以被虚拟机直接使用的 Java 类型,这就是虚拟机的类加载机制. 与编译时需要进行连接工作的语言不同,Java 语言中类的加载.连接和初始化都是在程序运行期间完成的,这种策略虽然会让类加载时增加一些性能开销,…
前言 本文中部分内容引用至<深入理解Java虚拟机:JVM高级特性与最佳实践(第2版)>第12章,如果有兴趣可自行深入阅读,文末放有书籍PDF版本连接. 一.物理机中的并发 物理机遇到的并发问题其实与虚拟机中的情况有很多相似之处,所以物理机对并发的处理方案对于虚拟机的实现也有比较大的参考意义     "充分的利用计算机效能"和"让计算机并发运行多个任务"之间的关系,看上去是紧密相连的,但是实际上并没有想象中的那么简单,这其中有一个重要的原因在于计算机的大…
目录 前言 1. 自动内存管理 1.1 JVM运行时数据区 1.2 Java 内存结构 1.3 HotSpot 虚拟机创建对象 1.4 HotSpot 虚拟机的对象内存布局 1.5 访问对象 2. 垃圾回收与内存分配 2.1 判断对象是否存活 2.2 分代与内存分配.回收策略 2.3 垃圾回收算法(GC 的算法) 2.4 HotSpot 的算法实现 2.5 垃圾收集器 3. JVM 参数配置 3.1 JVM 内存参数简述 3.2 JVM 的 GC 收集器设置 4. JVM 性能调优案例分析 4.…
郑重声明:本片博客是学习<深入理解Java虚拟机>一书所记录的笔记,内容基本为书中知识. Java程序员有一个共识,以编译方式执行本地代码比解释方式更快,之所以有这样的共识,除去虚拟机解释执行字节码时额外消耗时间的原因外,还有一个很重要的原因就是虚拟机设计团队几乎把对代码的所有优化措施都集中在了即时编译器之中(在JDK 1.3之 后,Javac就去除了-O选项,不会生成任何字节码级别的优化代码了),因此一般来说,即时编译器产生的本地代码会比Javac产生的字节码更加优秀[1].本篇博客,我们将…
本篇为读深入理解Java虚拟机(第2版)一书的笔记目录. Java 运行期数据区 Java 垃圾回收算法 Java 内存分配策略 Java 类文件结构 Java 加载.链接.初始化 Java 类加载器…
类加载机制 谈起类加载机制,在这里说个题外话,当初本人在学了两三个月的Java后,只了解了一些皮毛知识,就屁颠屁颠得去附近学校的招聘会去蹭蹭面试经验,和HR聊了一会后开始了技术面试,前抛出了两个简单的小问题铺垫了一下,然后接下来的问题就是简单的说一下类加载机制,听到这个问题,我脑子里面想到这个问题我看过,在<深入理解Java虚拟机>这本书上看到过这个原理,但是只是很浅显的翻看了一下,并没有下功夫去了解其中的原理.然后就大脑一片空白,什么也想不到了,支支吾吾没有回答上来,这就gg了,当时羞愧得想…
最近一直在看<深入理解Java虚拟机>第三版,无意中发现了第三版是最近才发行的,听说讲解的JDK版本升级,新增了近50%的内容. 这种神书,看懂了,看进去了,真的看的很快,并没有想象中的晦涩难懂,毕竟是公认的经典,作者书面描述能力肯定了得.虽然这种书,不会让你的代码能力马上提升,但是真正的让你知其然,还知其所以然.等遇到了这方面的问题,肯定不会像无头苍蝇一样,一头雾水,起码有一定的思路.更多Java.计算机方面的一些好书正在路上,今年一定要好好地提升一下内功. 不过,比如第五章的内容,调优实战…
好文转载:http://blog.csdn.net/zhangjg_blog/article/details/20380971 什么是Java虚拟机   作为一个Java程序员,我们每天都在写Java代码,我们写的代码都是在一个叫做Java虚拟机的东西上执行的.但是如果要问什么是虚拟机,恐怕很多人就会模棱两可了.在本文中,我会写下我对虚拟机的理解.因为能力所限,可能有些地方描述的不够欠当.如果你有不同的理解,欢迎交流. 我们都知道Java程序必须在虚拟机上运行.那么虚拟机到底是什么呢?先看网上搜…
参考 http://book.2cto.com/201306/25434.html 另外,这篇文章也是从一个系列中得出的: <深入理解Java虚拟机:JVM高级特性与最佳实践(第2版)> http://book.2cto.com/201306/25426.html 已经下载了这本书(60多M..) /Users/baidu/Documents/Data/Interview/Java HotSpot 提起HotSpot VM,相信所有Java程序员都知道,它是Sun JDK和OpenJDK中所带…
有一个在线系列地址 <深入理解Java虚拟机:JVM高级特性与最佳实践(第2版)> http://book.2cto.com/201306/25426.html 已经下载了这本书(60多M..) /Users/baidu/Documents/Data/Interview/Java 全书共分为五大部分,围绕内存管理.执行子系统.程序编译与优化.高效并发等核心主题对JVM进行了全面而深入的分析  …
深入理解Java虚拟机--下 参考:https://www.zybuluo.com/jewes/note/57352 第10章 早期(编译期)优化 10.1 概述 Java语言的"编译期",可能是指一个前端编译器把.java文件转变成.class文件的过程:也可能是指虚拟机的后端运行期编译器(JIT编译器,Just In Time Compiler,即时编译器)把字节码转变成机器码的过程:还可能是指使用静态提前编译器(AOT编译器,Ahead Of Time Compiler)直接把*…
摘自:http://blog.csdn.net/zhangjg_blog/article/details/20380971 什么是Java虚拟机 我们都知道Java程序必须在虚拟机上运行.那么虚拟机到底是什么呢?先看网上搜索到的比较靠谱的解释: 虚拟机是一种抽象化的计算机,通过在实际的计算机上仿真模拟各种计算机功能来实现的.Java虚拟机有自己完善的硬体架构,如处理器.堆栈.寄存器等,还具有相应的指令系统.JVM屏蔽了与具体操作系统平台相关的信息,使得Java程序只需生成在Java虚拟机上运行的…
java虚拟机在执行java程序的时候会把它所管理的内存分为多个不同的区域,每个区域都有不同的作用,以及由各自的生命周期,有些随着虚拟机进行的启动而存在,有些区域则依赖于用户线程的启动或结束而建立或销毁等.在<java虚拟机规范(Java SE7版)>中规定,java内存分为以下一种,如图所示: 1.程序计数器 程序计数器(Program Counter Register)是一个内存较小的区域,它可以被看作是当前线程所执行到的字节码的行号的指示器,字节码解释器在执行下一条指令,比如分支,跳转,…
本课题是对<深入理解Java虚拟机>周志明 第二版的总结   具体可以参考:https://pan.baidu.com/s/1v_mPp--XV4u4rCBMkbR37A 第1版 可以忽略  直接看  第2版就行…
上周末搬家后,家里的宽带一直没弄好,跟电信客服反映了N遍了终于约了个师傅明天早上来迁移宽带,可以结束一个多星期没网的痛苦日子了.这段时间也是各种忙,都一个星期没更新博客了,再不写之前那种状态和激情都要慢慢褪去了,总觉得心里慌的一逼,这怎么行呢?!趁明天周末,在公司电脑上记录下这周的一些学习内容.近期在看一本很经典的java书籍:<深入理解java虚拟机 第二版>,几年前也翻过,但那时候功力不够,不太能看懂就没看了.现在回过头来看,发现确实写的很好,很多知识点都能理解了,而且讲的也很有深度,收获…
参考 http://book.2cto.com/201306/25434.html 另外,这篇文章也是从一个系列中得出的: <深入理解Java虚拟机:JVM高级特性与最佳实践(第2版)> http://book.2cto.com/201306/25426.html 已经下载了这本书(60多M..) /Users/baidu/Documents/Data/Interview/Java HotSpot 提起HotSpot VM,相信所有Java程序员都知道,它是Sun JDK和OpenJDK中所带…
原文链接:http://blog.csdn.net/zhangjg_blog/article/details/20380971 什么是Java虚拟机   作为一个Java程序员,我们每天都在写Java代码,我们写的代码都是在一个叫做Java虚拟机的东西上执行的.但是如果要问什么是虚拟机,恐怕很多人就会模棱两可了.在本文中,我会写下我对虚拟机的理解.因为能力所限,可能有些地方描述的不够欠当.如果你有不同的理解,欢迎交流. 我们都知道java程序必须在虚拟机上运行.那么虚拟机到底是什么呢?先看网上搜…
目录 概述 第一章: 走进Java 第二章: Java内存区域与内存溢出异常 第三章: 垃圾收集器与内存分配策略 第四章: 虚拟机性能监控与故障处理 第五章: 调优案例分析与实战 第六章: 类文件结构 第七章: 虚拟机类加载机制 第八章: 虚拟机字节码执行引擎 第九章: 类加载及执行子系统的案例 第十章: 早起(编译期)优化 第十一章: 晚期(运行期)优化 第十二章: Java内存模型与线程 第十三章: 线程安全与锁优化 概述 本文是笔记的目录. 书籍中是基于Java1.7的. 去网上找这本书,…
最近打算做好现有工作的前提下,扎实一下自己专业的技术知识,并将相关的经典书也记录一下.今天看了一些JVM相关的知识,这里面的经典是<深入理解Java虚拟机>,适合有点基础又想深入理解其中原理的朋友. 作者是周志明,资深Java技术专家,对JavaEE企业级应用开发.OSGi.Java虚拟机和工作流等都有深入的研究,并在大量的实践中积累了丰富的经验.尤其精通Java虚拟机,撰写了大量与JVM相关的经典文章,被各大技术社区争相转载,是ITeye等技术社区公认的Java虚拟机方面的领袖人物之一.除本…
xl_echo编辑整理.欢迎添加echo微信(微信号:t2421499075)交流学习. 百战不败,依不自称常胜,百败不颓,依能奋力前行.--这才是真正的堪称强大!! --- > 以下内容摘抄自<_深入理解Java虚拟机_JVM高级特性与最佳实践 第2版_220_>,博主完全尊重书籍原创,只是学习笔记摘抄部分,由于不是原创,不支持转载.如有侵权请联系博主(微信号:t2421499075). #### Java能够被广泛认可的优点: - 结构严谨 - 面向对象编程的思想 - 跨平台的便利…
xl_echo编辑整理.欢迎添加echo微信(微信号:t2421499075)交流学习. 百战不败,依不自称常胜,百败不颓,依能奋力前行.--这才是真正的堪称强大!! --- > 以下内容摘抄自<_深入理解Java虚拟机_JVM高级特性与最佳实践 第2版_220_>,博主完全尊重书籍原创,只是学习笔记摘抄部分,由于不是原创,不支持转载.如有侵权请联系博主(微信号:t2421499075). > Java是一门面向对象的编程语言,在程序运行过程中每时每刻都有对象被创建,我们在写代码的…
深入理解java虚拟机JVM(上) 链接:https://pan.baidu.com/s/1c6pZjLeMQqc9t-OXvUM66w 提取码:uwak 复制这段内容后打开百度网盘手机App,操作更方便哦 1. java的技术体系概述 1.1 java介绍 ava的体系结构规范: java编程语言 java Class文件格式 java API java VM java VM JVM的核心组件:Class loader 执行引擎(解释器)-----> java进程启动 java编程语言的主要特…