1.问题 1.JAVA文本文件如何被翻译成CLASS二进制文件? 2.如何理解CLASS文件的组成结构? 3.虚拟机如何加载使用类文件的生命周期? 4.虚拟机系列诊断工具如何使用? 5.虚拟机内存淘汰机制? 6.虚拟机指令集架构? 2.关键词 编译,魔数,常量池,字面量,数据表,堆栈,方法区,程序计数器,内存引用,内存溢出,垃圾回收器,新生区,永久区,指令集 3.全文概要 上一篇我们介绍了代码如何被翻译成机器级程序,然后逐条送到CPU执行.但是现代硬件的指令集架构千差万别,不同机器上运行相同代码…
本文转载自公众号:石彬的架构笔记,阅读大约需要8分钟. 作者:李瑞杰 目前就职于阿里巴巴,资深 JVM 研究人员 在 Java 程序中,我们拥有多种新建对象的方式.除了最为常见的 new 语句之外,我们还可以通过反射机制.Object.clone 方法.反序列化以及 Unsafe.allocateInstance 方法来新建对象. 其中,Object.clone 方法和反序列化通过直接复制已有的数据,来初始化新建对象的实例字段. Unsafe.allocateInstance 方法则没有初始化实…
前言 Java 虚拟机是学习 Java 的基础,也是迈入高级 Java 开发工程师的必备知识点.所以今天这篇文章我们来聊聊如何从零开始学习 Java 虚拟机. 深入浅出Java虚拟机 对于刚刚接触 JVM 的同学来说,JVM 就像一个黑盒一样,完全不知道这是一个什么东西.所以对于小白来说,最重要是搞清楚 JVM 到底是干嘛的,以及其常用的知识框架.针对这样的需求,可以看一下<深入理解Java虚拟机>,这本书是国内学习 JVM 的必备书籍.通过阅读这本书,你对 JVM 的一些知识点会了解得更加全…
前言 作为Java程序员,你有没有被JVM伤害过?面试的时候是否碰到过对JVM的灵魂拷问?   一.JVM 内存区域划分 1.程序计数器(线程私有) 程序计数器(Program Counter Register),也有称作为 PC 寄存器.保存的是程序当前执行的指令的地址(也可以说保存下一条指令的所在存储单元的地址),当 CPU 需要执行指令时,需要从程序计数器中得到当前需要执行的指令所在存储单元的地址,然后根据得到的地址获取到指令,在得到指令之后,程序计数器便自动加 1 或者根据转移指针得到下…
不得不承认,经历过行业的飞速发展期,互联网的整体发展趋于平稳.为什么这么说?为什么要放在 Java 程序员的盘点下说? 的确,对于进可攻前端,后可守后端大本营的 Java 程序员而言,虽然供应逐年上涨,但是市场似乎对他们依然青睐有加.这些承担着技术招聘市场中高供给高需求的 Java 程序员在 17 年的招聘市场上,真的还能如此风光吗?还是埋下了一些「危机」的伏笔呢? 100offer 研究后发现,2017 年的 Java 程序员的确很风光,具体体现在市场需求和平均工资的上涨上,但这些风光之后,埋…
Java程序员入门容易,进阶很难,想要在竞争中保持优势,脚踏实地的同时也要仰望星空规划自己的未来.时间在流逝,年龄在增加,你期望的薪水也在不断增多,你总得让自己能力持续增加以配得上想要的收入吧. 从初级的Java程序员做起,就要注重修炼自己扎实的基本功,开阔工作思路多思考需求背后的目标.不论是业务还是技术都要多问为什么,在完成工作的前提下寻根溯源是让个人快速的提升的有效方法. 另外,在纵向的积累沉淀自己技术的同时,横向扩展自己的知识面.有自己深入的知识领域,同时又有广阔的知识面,是个人竞争力的很…
想不到我工作中经常GOOGLE搜寻技术问题的stack overflow网站的创办人竟然是<高效能程序员的修炼>一书的作者!看了一遍全书,果然名不虚传. 本书更多的从人文角度而非技术角度去阐释了作为一个程序员,应该具备的基本素质,所以在看这本书的过程中,感觉非常轻松并且内容也很通俗易懂,又很贴近工作和生活中的实际,书中通过一个程序员的职业生涯的角度去说明了作为一名合格的程序员,需要具备的基本素质,同时也分享了作者工作中大量的经验和忠告.可能每个人读同一本书,对于不同的章节.内容会产生不同的感想…
1.static静态变量,在次级作用域也可以被修改. 2.k++ + k++.第一个自加实际上只有在与计算+k++时补增.详情P36的题目. 3.Java数据类型从低到高分为(byte short char)---int-long-float--double.低级可以自动转换为高级.平级和高级向低级转换均使用强制转换.可以使用包装类定义对象后,使用对象的子函数转换,此时包装内可以实现不同数据类型的转换.系统默认的浮点数是double,默认整型为int.直接向float赋值应注意. 如 short…
< Java 编程思想> 适合各个阶段 Java 程序员的必备读物.书中对 Java 进行了详尽的介绍,与其它语言做了对比,解释了 Java 很多特性出现的原因和解决的问题.初学者可以通过此书快速掌握 Java 面向对象的理念,学会正确使用 Java 的各种特性:平时开发中可以将此书作为工具书参考,遇到疑难问题或查缺补漏都可以参考此书:有经验的开发者重温此书,可以加深对 Java 的理解,开发能力再上一层楼. <设计模式> 四位作者均是国际公认的面向对象软件领域的专家.此书以 C+…