Java语言从诞生之时就宣称一次编写,到处运行的跨平台特性,其实现原理是源码文件并没有直接编译成机器指令,而是编译成Java虚拟机可以识别和运行的字节码文件(Class类文件,*.class),字节码文件是一种平台无关的…
标签:java虚拟机
《深入理解java虚拟机》学习笔记6——类加载机制
Java虚拟机类加载过程是把Class类文件加载到内存,并对Class文件中的数据进行校验、转换解析和初始化,最终形成可以被虚拟机直接使用的java类型的过程。 在加载阶段,java虚拟机需要完成以下3件事: a.通过一…
《深入理解java虚拟机》学习笔记7——Java虚拟机类生命周期
C/C++等纯编译语言从源码到最终执行一般要经历:编译、连接和运行三个阶段,连接是在编译期间完成,而Java在编译期间仅仅是将源码编译为Java虚拟机可以识别的字节码Class类文件,Java虚拟机对中Class类文件的…
深入理解Java虚拟机
1. Class文件是一组以8位字节为基础单位的二进制流,各个数据项目严格按照顺序紧凑地排列在Class文件中,中间没有添加任何分隔符,这使得整个Class文件中存储的内容几乎全部是程序运行的必要数据,没有空隙存在。当遇…
笔记--深入理解java虚拟机第二版
第一章 走近java 1.JDK(支持java程序开发的最小环境):java程序设计语言,java虚拟机,java API类库 JRE(支持java程序运行的标准环境):java S…
深入理解Java虚拟机笔记1: OOM实战
通过代码模拟Java虚拟机规范中描述的各个运行时区域内存溢出的场景。 1. Java堆溢出 2. 虚拟机栈和本地方法栈溢出 2.1 StackOverflowError 2.2 栈OutOfMemoryError 3. …
深入理解Java虚拟机 精华总结(面试)
一.运行时数据区域 Java虚拟机管理的内存包括几个运行时数据内存:方法区、虚拟机栈、堆、本地方法栈、程序计数器,其中方法区和堆是由线程共享的数据区,其他几个是线程隔离的数据区。 1.1程序计数器 程序计数器…
深入理解java虚拟机学习—运行时数据区域
参考资料:《深入理解java虚拟机》JVM高级特性与最佳实践第二版 周志明 java虚拟机运行时数据区域如下图: 其中 红色背景区域代表的是线程共享的内存区,而蓝色背景区域代表的是线程私有的内存区。 一、 线…
深入理解Java虚拟机(1)-虚拟机是什么
什么是Java虚拟机 作为一个Java程序员,我们每天都在写Java代码,我们写的代码都是在一个叫做Java虚拟机的东西上执行的。但是如果要问什么是虚拟机,恐怕很多人就会模棱两可了。在本文中,我会写下我对虚拟机的理解。因…
深入理解Java虚拟机 读书笔记(二)
第二部分 自动内存管理机制 第二章 java内存区域与内存溢出异常 2.2 运行时数据区域 Java虚拟机在执行Java程序的过程中会把它所管理的内存划分为若干个不同的数据区域。 2.2.1 程序计数器 – …
《深入理解java虚拟机》 学习笔记一
第一部分 走进java 第一章 走进java 1.2 java技术体系 Java优点: 它摆脱了硬件平台的束缚,实现了“一次编写,到处运行”的理想; 它提供了一个相对安全的内存管理和访问机制,避免了绝大部分的内存泄漏和指…
深入理解Java虚拟机笔记(一)
内容主要参考《深入理解Java虚拟机(第2版)》 Java和C++之间有一堵由内存动态分配和垃圾收集技术所围成的“高墙”,墙外面的人想进去,墙里面的人想出来。 一 JVM运行时数据区 运行时数据区结构如下图: 1 程序计…