深入理解Java虚拟机01--概述】的更多相关文章

第一章是对java的产生,历史的整体介绍 java的使用很广泛,安装jdk的时候会看到一句广告语runs in 10 billions machines.使用java的设备多达几十亿台 1.概述 优点: 摆脱了平台的限制,一次编写,到处运行 相对安全的内存管理和访问机制,避免了绝大部分的内存泄漏和指针越界问题 热点代码检测和运行是编译及优化 完善的应用接口,还有无数来自商业机构和开源社区的第三方类库来帮助他实现各种功能 ... 尽管java有这么多优点,相对于其他语言,使用上简单了很多.但是作为…
首先需要澄清的是,垃圾收集(GC)的历史远比Java要久远,当我们意识到手动管理内存所带来的麻烦时,懒惰的天性推动先驱们寻找更为简单.易用.关键是傻瓜式的内存管理技术.GC技术起源于1960年诞生于MIT的Lisp语言,由此可见越聪明的人越懒惰.           最近有一种想法:程序开发,程序设计从本质上来讲是个哲学问题,虽然我们要解决的问题是现实在程序世界中的投射,那么问题本身就应该在现实世界中有相应的解决,而且我们也一直在模拟现实世界,由过程式,面向对象以及函数式编程以及我们下面所要看到…
x 首先用书上的脚本尝试,失败. 之后根据源文件的 README 编译,抛出: root@linux:/opt/openjdk# sh ./get_source.sh ERROR: Need initial repository to use this script 采用下面的方案解决: 你jdk8版本太老了,但是你系统又比较新(很多工具,例如make也是最新的),导致很多不匹配.解决办法换成最新版本的jdk8吧. 具体方法:hg clone http://hg.openjdk.java.net…
深入理解Java虚拟机--下 参考:https://www.zybuluo.com/jewes/note/57352 第10章 早期(编译期)优化 10.1 概述 Java语言的"编译期",可能是指一个前端编译器把.java文件转变成.class文件的过程:也可能是指虚拟机的后端运行期编译器(JIT编译器,Just In Time Compiler,即时编译器)把字节码转变成机器码的过程:还可能是指使用静态提前编译器(AOT编译器,Ahead Of Time Compiler)直接把*…
深入理解Java虚拟机--中 第6章 类文件结构 6.2 无关性的基石 无关性的基石:有许多可以运行在各种不同平台上的虚拟机,这些虚拟机都可以载入和执行同一种平台无关的字节码(ByteCode),从而实现了程序的"一次编写,到处运行". Java语言中的各种变量.关键字和运算符号的语义最终都是由多条字节码命令组合而成的,因此字节码命令所能提供的语义描述能力肯定会比Java语言本身更加强大. 6.3 Class类文件的结构 注意:任何一个Class文件都对应着唯一一个类或接口的定义信息,…
深入理解java虚拟机JVM(下) 链接:https://pan.baidu.com/s/1c6pZjLeMQqc9t-OXvUM66w 提取码:uwak 复制这段内容后打开百度网盘手机App,操作更方便哦 4. JVM的垃圾收集器 4.1 垃圾收集器类型概述 新生代可用GC策略: 串行GC(Serial Copying); 并行回收GC(Parallel Scavenge): 并行GC(ParNew): 老年代可用GC策略: 串行GC(Serial MSC): 并行GC(Parallel MS…
上节学习回顾 从课本章节划分,<垃圾收集器>和<内存分配策略>这两篇随笔同属一章节,主要是从理论+实验的手段来讲解JVM的内存处理机制.好让我们对JVM运行机制有一个良好的概念,才能继续往下学习. 本节学习重点 本节主要是针对JVM内存管理机制的一些监控手段,例如堆情况使用的监控,线程栈情况的监控等.有几句废话还是有必要在这里强调的,工具是人类思维的工具,例如Java语言是人类满足需求的一种技术手段,而监控工具只是维护程序应用的一种手段.所以,思考的逻辑思维要清晰,是问题引导工具,…
文章主要是阅读<深入理解java虚拟机:JVM高级特性与最佳实践>第二章:Java内存区域与内存溢出异常 的一些笔记以及概括. 好了開始.假设有什么错误或者遗漏,欢迎指出. 一.概述 先上一张图 这张图主要列出了Java虚拟机管理的内存的几个区域. 常有人把Java内存区分为堆内存(Heap)和栈内存(Stack).这样的分法比較粗糙,Java内存区域的划分实际上远比这复杂.从上图就能够看出了. 堆栈分法中所指的"栈"实际上仅仅是虚拟机栈,或者说是虚拟机栈中的局部变量表部分…
深入理解Java虚拟机--上 第2章 Java内存区域和内存溢出异常 2.2 运行时数据区域 图 2-1 Java虚拟机运行时数据区 2.2.1 程序计数器 程序计数器可以看作是当前线程所执行的字节码的行号指示器,线程私有. 由于Java虚拟机的多线程是通过线程轮流切换并分配处理器执行时间的方式来实现的,在任何一个确定的时刻,一个处理器(对于多核处理器来说是一个内核)都只会执行一条线程中的指令. 因此,为了线程切换后能恢复到正确的执行位置,每条线程都需要有一个独立的程序计数器,各条线程之间计数器…
<深入理解Java虚拟机:JVM高级特性与最佳实践>[PDF]下载链接: https://u253469.pipipan.com/fs/253469-230062566 内容简介 作为一位java程序员,你是否也曾经想深入理解java虚拟机,但是却被它的复杂和深奥拒之门外?没关系,<深入理解java虚拟机:jvm高级特性与最佳实践>极尽化繁为简之妙,能带领你在轻松中领略java虚拟机的奥秘.<深入理解java虚拟机:jvm高级特性与最佳实践>是近年来国内出版的唯一一本与…