JVM 笔记 - 9 方法区 栈、堆、方法区的交互关系 1. 运行时数据区结构图 2. 栈、堆、方法区的关系 方法区的理解 1. 方法区在哪里? 《Java虚拟机规范》中明确说明:“尽管所以的方法区在逻辑上是属于堆的一部分,但一些简单的实现可能不会选择去进行垃圾收集或者进行压缩”,但对于HotSpot JVM而言,方法区还有一个别名叫做Non-Heap,目的就是为了和堆分开。 所以方法区看做是一块独立于Java堆 2020-08-03 JVM JVM 笔记
JVM 笔记 - 8 堆 堆的核心概述 1. 概述 一个JVM实例只存在一个堆内存,堆也是Java内存管理的核心区域 Java堆区在JVM启动的时候被创建,其空间大小也就确定了。是JVM管理的最大一块内存空间,且大小是可以调节的 《Java虚拟机规范》规定,堆可以处于物理不连续的内存空间中,但在逻辑上它应该是被视为连续的 所有线程共享Java堆,在这里还可以划分线程私有的缓冲区(Thread Local Alloca 2020-07-28 JVM JVM 笔记
JVM 笔记 - 7 本地方法栈 本地方法栈 Java虚拟机栈用于管理Java方法的调用,而本地方法栈用于管理本地方法的调用 本地方法栈,也是线程私有的 允许被是线程固定或者是可动态扩展的内存大小 如果线程请求分配的栈容量超过本地方法栈允许的最大容量,Java虚拟机将会抛出一个StackOverflowError异常 如果本地方法栈可以动态扩展,并且在尝试扩展的时候无法申请到足够的内存,或者在创建新的线程时没有足够的内存去创 2020-07-25 JVM JVM 笔记
JVM 笔记 - 6 本地方法接口 什么是本地方法 简单地讲,一个Native Method就是一个Java调用非Java代码的接口。一个Native Method是这样一个Java方法:该方法的实现由非Java语言实现,比如C。这个特性并非Java所特有,很多其他的变成语言都有这一机制,比如在C中,你可以使用extern “C” 告知C编译器去调用一个C的函数 为什么要用Native Method? Java使用起来非常方便, 2020-07-25 JVM JVM 笔记
JVM 笔记 - 5 虚拟机栈 虚拟机栈概述 由于跨平台性的设计,Java的指令都是根据栈来设计的。不同平台CPU架构不同,所以不能设计为基于寄存器的。 优点是跨平台,指令集小,编译器容易实现,缺点是性能下降,实现同样的功能需要更多的指令。 栈是运行时的单位,而堆是存储的单位。 即:栈解决程序的运行问题,即程序如何执行,或者说如何处理数据。堆解决的是数据存储的问题,即数据怎么放、放在哪。 1. 虚拟机栈基本内容 Jav 2020-07-20 JVM JVM 笔记
我的 2020 上半年 - 个人的一些感想与总结 我的 2020 上半年 - 个人的一些感想与总结 躲过了年前的武汉封城 | 1月上旬 ~ 1月末 2020年1月,考研初试已经结束,考完后感觉整个人都松了口气。 想着玩几天,再开始学习一些感兴趣东西。 考完后前几天每天早上睡到9点10点起床,真的很爽,晚上玩玩游戏,打打牌,同学聚在某一个宿舍边打牌边聊天,想晚睡就晚睡,那日子真的很轻松舒服。 考研期间压抑久了,就像没事出去一起吃好吃的。正好班上 2020-07-18 个人总结 个人总结 2020
JVM 笔记 - 4 程序计数器 PC Register JVM中的程序记数寄存器(Program Counter Register)中,Register 的命名源于CPU的寄存器,寄存器存储指令相关的现场信息。 在这里,并非是广义上所指的物理寄存器,或许将其翻译为PC技术器(或指令计数器)更加贴切。JVM中的PC寄存器是对物理PC寄存器的一种抽象模拟。 作用:PC寄存器用来存储指向下一条指令的地址,也即将要执行的指令代码。有执 2020-07-16 JVM JVM 笔记
Crafting Interpreters - The Lox Language Crafting Interpreters - [1-3] The Lox Language 你可以为某人做些比让他们吃早餐更好的事情吗? - Anthony Bourdain 因为项目的原因(其实是自己懒),第三节迟迟没有翻译更新,之后应该也是随缘,佛系更新(虽然也确实没人康)。不过这本书确实还不错,顺便还能锻炼阅读英文的能力。 我们将用本书的其余部分来详细阐明Lox语言的每个角落 2020-07-14 Crafting Interpreters 解释器 外文书籍 Crafting Interpreters
JVM 笔记 - 3 运行时数据区概述及线程 概述 内存是非常重要的系统资源,是硬盘和CPU的中间仓库和桥梁,承载着操作系统和应用程序的实时运行。JVM内存布局规定了Java在运行过程中内存申请、分配、管理的策略,保证了JVM的高校稳定运行。不同的JVM对于内部才能的划分方式和管理机制存在着部分差异。 Java虚拟机定义了若干种程序运行期间会使用到的运行时数据区,其中有一些会随着虚拟机启动而创建,随着虚拟机退出而销毁 另外一些则是与 2020-07-14 JVM JVM 笔记
JVM 笔记 - 2 类加载子系统 类加载器与类的加载过程 类加载的阶段 类加载阶段包括加载(Loading)阶段、链接(Linking)阶段 和 初始化(Initialization)阶段,其中链接阶段包含了验证(Verification)、准备(Preparation)、解析(Resolution) 类加载器子系统负责从文件系统或者网络中加载Class文件,class文件在文件开头有特定的文件标识 ClassLoader 2020-07-12 JVM JVM 笔记