正文一、无关性的基石1、两种无关性平台无关性: Java 程序的运行不受计算机平台的限制,“一次编写,到处运行”。语言无关性: Java 虚拟机只与 Class 文件关联,并不关心 Class 文件的来源是何种语言。2、无关性的实现基础各种不同平台的虚拟机所有平台都统一使用的字节码存储格式二、Class 类文件的结构Class 类文件是一组以 8 字节为基础单位的二进制流,各个数据项目严格按照顺序紧凑地排列在 Class 文件中,中间没有添加任何...
有官方解释https://www.java.com/zh_CN/about/重要概念JDK和JREJava技术体系所包含的内容实际上Java官方有提供给我们一张图,图片来源http://docs.oracle.com/javase/7/docs/两个常见的重要概念。其实上面的图中已经划分出了JDK和JRE的范围了。我们对这张图做一个归纳,用我们的语言简单地总结一下什么是JDK和JRE:1、JDK(Java Development Kit),是用于支持Java程序开发的最小环境,基本上Java程序设计语言、Java虚拟机、Java A...
1、Oracle Java SE 8 产品组件 通过上面给定的地址,我们可以看到如下这张图: 通常来说 Java平台标准版(Java SE)包括 Java SE开发工具包(JDK)和Java SE运行时环境(JRE)。 JRE提供了运行以Java编程语言编写的applet和应用程序所必需的库,Java虚拟机和其他组件;JDK包括JRE以及编译器和调试器等命令行开发工具,可以用来开发Java应用程序 。 PS:JDK包含JRE,我们通常安装JDK的同时也会安装JRE。2、虚拟机 上...
1,jvm组成 2,虚拟机栈的组成 3,栈帧的组成 4,方法区的组成 原文:https://www.cnblogs.com/benbenzoule/p/13839106.html
今天开始实战Java虚拟机之四:“禁用System.gc()”。 总计有5个系列实战Java虚拟机之一“堆溢出处理”实战Java虚拟机之二“虚拟机的工作模式”实战Java虚拟机之三“G1的新生代GC”实战Java虚拟机之四“禁用System.gc()” 实战Java虚拟机之五“开启JIT编译” 默认情况下,System.gc()会显式直接触发Full GC,同时对老年代和新生代进行回收。而一般情况下我们认为,垃圾回收应该是自动进行的,无需手工触发。如果过于频繁地触...
最近学习java虚拟机做了一些整理,会陆续发完。 Java虚拟机一、概念:当我们谈到java虚拟机的时候,有可能指下面3个方面:1):抽象java虚拟机的规范。2):一个java虚拟机具体的实现。------实现是指:实现需要有接口,用类实现接口,并实现接口所有方法。就是说先有一个接口,然后写一个类实现接口中的所定义的方法。3):一个运行中的java虚拟机实例。而我们经常说的大多数是第三种。也就是一个正在运...
Java虚拟机规范官方文档 原文:https://www.cnblogs.com/qq1069284034/p/11496306.html
Java 虚拟机面试题全面解析https://www.zybuluo.com/Yano/note/321063 面试题本文固定链接:https://www.zybuluo.com/Yano/note/321063 本文 PDF 下载:http://download.csdn.net/detail/yano_nankai/9469648 LeetCode题解:https://github.com/LjyYano/LeetCode 我的博客:http://blog.csdn.net/yano_nankai周志明著的《深入理解 Java 虚拟机》的干货~如有错误,欢迎指出 O(∩_∩)O 转载请保留以上信息。 Java 虚拟机面试题全面解...
对象已死!垃圾收集器在对堆进行回收前,首先要做的事情就是要确定这些对象之中哪些还“存活”着, 哪些已经“死去" (即不可能再被任何途径使用的对象)。1) 引用计数算法给每个对象中添加一个引用计数器,每当有一个地方引用它时, 计数器值就加l ; 当引用失效时,计数器值就减l :任何时刻计数器为0 的对象就是不可能再被使用的。引用计数算法( ReferenceCounting )的实现简单,判定效率也很高,在大部分情况下它都是一个不...
判断对象是否“已死”引用计数法在对象中添加一个引用计数器,每当一个地方引用它时,计数器值+1,引用失效的时候,计数器值-1;当计数器值为0的时候说明对象“已死”。这样做的好处就是简单快捷,且效率也很高,但是无法解决掉循环互相引用的问题。可达性分析算法通过一系列被成为“GC Roots”的根对象作为起始点集,从这些点开始,根据引用关系向下搜索,搜索过程所走的路径被称为“引用链”,如果某个对象到“GC Roots”间没有任...
注:此篇文章可以算是读《深入理解Java虚拟机:JVM高级特性与最佳实践》一书后的笔记总结加上我个人的心得看法。整体总结顺序沿用了书中顺序,但多处章节用自己的话或直白或扩展的进行了重新的理解总结,而非单纯摘录。 Java内存区域简介运行时数据区域程序计数器又称“PC”。是一块很小的内存空间。jvm最终会将java文件编译成字节码指令,通过字节码指令来执行程序。而程序计数器的作用就是指明“当前线程需要执行的字节码指令”。...
1、概述 1.1、JVM规范 试图 定义一种java内存模型(JMM) 来 屏蔽掉各种硬件和OS的内存访问差异,以 实现 让java程序在各种平台下都达到一致的并发效果; 1.2、JDK1.5后,JMM 已经成熟和完善;2、主内存 与 工作内存 2.1、JMM 的主要目标: 定义 程序中各个变量的 访问规则; (在JVM中 将变量 存储到内存 与 从内存中取出变量 的底层细节); ...
Java 虚拟机简介本文是阅读《深入理解 Java 虚拟机:JVM 高级特性与最佳实践》的笔记推荐学习资料:《The Java Virtual Machine Specification, Java SE 7 Edition》http:// hllvm. group. iteye. com/,高级语言虚拟机圈子概述Java 技术体系 4 平台Java cardJava ME(Micro Edition),手机、PDA 等,对 Java API 有所精简Java SE(Standard Edition),桌面级应用Java EE(Enterprise Edition),除桌面功能外提供企业级功能,如...
目录概述类加载的时机加载类加载的过程加载验证准备解析初始化类加载器类与类加载器双亲委派模型破坏双亲委派模型概述虚拟机把描述类的数据从Class文件加载到内存,并且对数据进行校验、转换解析和初始化,最终形成可以被虚拟机直接使用的Java类型,这就是虚拟机的类加载机制。 编译时无需进行连接工作,类的加载、连接和初始化过程都是在程序运行期间完成的。如面向接口的应用程序可以等到运行时再指定其实际的实现类;用户可以通...
1. 在如下几种情况下,Java虚拟机将结束生命周期: 1). 执行了System.exit()方法 2). 程序正常执行结束 3). 程序在执行过程中遇到了异常或错误而异常终止 4). 由于操作系统出现错误而导致Java虚拟机进程终止2. 类的加载,连接与初始化: 1). 加载:查找并加载类的二进制数据 2). 连接: a). 验证:确保被加载的类的正确性 b). 准备:为类的静态变量分配内存,并将其初始化为默认值...