摘要: 在《深入理解Java虚拟机》中关于Java堆内存有这样一段描述: 随着JIT编译期的发展与逃逸分析技术逐渐成熟,栈上分配、标量替换优化技术将会导致一些微妙的变化,所有的对象都分配到堆上也渐渐变得不那么“绝对”了。 在Java虚拟机中,对象是在Java堆中分配内存的,这是一个普遍的常识。 但是,有一种 阅读全文
posted @ 2021-05-22 23:28 cZgreat 阅读(83) 评论(0) 推荐(0)
摘要: 1、堆的核心概述 1.1、堆内存 一个进程对应一个JVM实例 一个JVM实例对应一个堆空间 进程包含多个线程,所以线程之间共享同一个堆空间 一个JVM实例只存在一个堆内存,堆也是Java内存管理的核心区域。 Java堆区在JVM启动的时候即被创建,其空间大小也就确定了,堆是JVM管理的最大一块内存空 阅读全文
posted @ 2021-05-22 23:23 cZgreat 阅读(85) 评论(0) 推荐(0)
摘要: 1、本地方法 简单地讲,一个Native Method是一个Java调用非Java代码的接囗。一个Native Method是这样一个Java方法:该方法的实现由非Java语言实现,比如C。 这个特征并非Java所特有,很多其它的编程语言都有这一机制,比如在C++中,你可以用extern "C"告知 阅读全文
posted @ 2021-05-22 23:20 cZgreat 阅读(160) 评论(0) 推荐(0)
摘要: 1、局部变量表 1.1、局部变量表介绍 局部变量表:Local Variables,也被称之为局部变量数组或本地变量表。 定义为一个数字数组,主要用于存储方法参数和定义在方法体内的局部变量,这些数据类型包括各类基本数据类型、对象引用(reference),以及 returnAddress(返回值) 阅读全文
posted @ 2021-05-22 23:12 cZgreat 阅读(292) 评论(0) 推荐(0)
摘要: 1、虚拟机栈概述 1.1、虚拟机栈出现的背景 由于跨平台性的设计,Java的指令都是根据栈来设计的。不同平台CPU架构不同,所以不能设计为基于寄存器的。 优点是跨平台,指令集小,编译器容易实现。缺点是性能下降,实现同样的功能需要更多的指令。 1.2、内存中的栈与堆 首先栈是运行时的单位,而堆是存储的 阅读全文
posted @ 2021-05-22 23:11 cZgreat 阅读(199) 评论(0) 推荐(0)
摘要: 程序计数器 它是一块很小的内存空间,几乎可以忽略不记。也是运行速度最快的存储区域。 任何时间一个线程都只有一个方法在执行,也就是所谓的当前方法。程序计数器会存储当前线程正在执行的Java方法的JVM指令地址;或者,如果是在执行native方法,则是未指定值(undefined)。 它是程序控制流的指 阅读全文
posted @ 2021-05-22 22:57 cZgreat 阅读(68) 评论(0) 推荐(0)
摘要: 1、前言 当我们通过前面的:类的加载 --> 验证 --> 准备 --> 解析 --> 初始化,这几个阶段完成后,就会用到执行引擎对我们的类进行使用,同时执行引擎将会使用到我们的运行时数据区。 不同的JVM对于内存的划分方式和管理机制存在部分差异。 2、运行时数据区与内存 2.1、内存 内存是非常重 阅读全文
posted @ 2021-05-22 22:56 cZgreat 阅读(81) 评论(0) 推荐(0)
摘要: 1、双亲委派机制 Java虚拟机对 class 文件采用的是按需加载的方式,也就是说当需要使用该类时才会将它的 class 文件加载到内存中生成 class 对象。而且加载某个类的class文件时,Java虚拟机采用的是双亲委派模式,即把请求交由父类处理,它是一种任务委派模式。 如果一个类加载器收到 阅读全文
posted @ 2021-05-22 22:52 cZgreat 阅读(145) 评论(0) 推荐(0)
摘要: 1、类加载子系统作用 负责从文件系统或者网络中加载Class文件,Class文件开头有特定标识。 Classloader只负责class文件的加载,至于是否可运行,则由执行引擎决定。 加载的类信息存放于称为方法区的内存空间,除了类信息,方法区还会存放运行时常量池信息,还可能包括字符串字面量和数字常量 阅读全文
posted @ 2021-05-22 21:59 cZgreat 阅读(85) 评论(0) 推荐(0)
摘要: 1、Java内存区域 2、运行时数据区域 3、JVM整体结构 4、Java代码执行流程 阅读全文
posted @ 2021-05-22 14:51 cZgreat 阅读(141) 评论(0) 推荐(0)
摘要: 1、 JVM 2、 Java VS C++ 垃圾收集机制为我们打理了很多繁琐的工作,大大提高了开发的效率,但是,垃圾收集也不是万能的,懂得JVM内部的内存结构、工作机制,是设计高扩展性应用和诊断运行时问题的基础,也是Java工程师进阶的必备能力。 C语言需要自己来分配内存和回收内存,Java全部交给 阅读全文
posted @ 2021-05-22 14:49 cZgreat 阅读(137) 评论(0) 推荐(0)