随笔 - 1162  文章 - 0  评论 - 16  阅读 - 59万 

随笔分类 -  JVM

JVM
第一章:Class 文件结构
摘要:一、概述 1、字节码文件的跨平台性 (1)Java语言:跨平台的语言(write once ,run anywhere) 当Java源代码成功编译成字节码后,如果想在不同的平台上面运行,则无须再次编译这个优势不再那么吸引人了。Python、PHP、Per1、Ruby、Lisp等有强大的解释器。·跨平 阅读全文
posted @ 2021-07-26 22:02 格物致知_Tony 阅读(86) 评论(0) 推荐(0) 编辑
第十七章:垃圾回收器
摘要:一、GC 分类与性能指标 1、垃圾回收器概述 垃圾收集器没有在规范中进行过多的规定,可以由不同的厂商、不同版本的JVM来实现。 由于JDK的版本处于高速迭代过程中,因此Java发展至今已经衍生了众多的 GC 版本。 从不同角度分析垃圾收集器,可以将 GC 分为不同的类型。 扩展:学习 Java 不同 阅读全文
posted @ 2021-06-01 22:36 格物致知_Tony 阅读(228) 评论(1) 推荐(1) 编辑
第十六章:垃圾回收(Garbage Collection)相关概念
摘要:一、System.gc() 的理解 1、System.gc() (1)在默认情况下,通过 System.gc()或者Runtime. getRuntime ( ).gc ()的调用,会显式触发Full GC,同时对老年代和新生代进行回收,尝试释放被丢弃对象占用的内存。 (2)然而 System.gc 阅读全文
posted @ 2021-05-27 22:57 格物致知_Tony 阅读(385) 评论(0) 推荐(0) 编辑
第十五章:垃圾回收(Garbage Collection)相关算法
摘要:一、垃圾标记阶段:对象存活判断 在堆里存放着几乎所有的Java对象实例,在Gc执行垃圾回收之前,首先需要区分出内存中哪些是存活对象,哪些是已经死亡的对象。只有被标记为己经死亡的对象,GC才会在执行垃圾回收时,释放掉其所占用的内存空间,因此这个过程我们可以称为垃圾标记阶段。 那么在JVM中究竟是如何标 阅读全文
posted @ 2021-05-22 00:14 格物致知_Tony 阅读(291) 评论(0) 推荐(0) 编辑
第十四章:垃圾回收概述
摘要:一、什么是垃圾 1、前言 垃圾收集,不是Java语言的伴生产物。早在1960年,第一门开始使用内存动态分配和垃圾收集技术的Lisp语言诞生。 关于垃圾收集有三个经典问题: (1)哪些内存需要回收? (2)什么时候回收? (3)如何回收? 垃圾收集机制是Java的招牌能力,极大地提高了开发效率。如今, 阅读全文
posted @ 2021-05-20 22:40 格物致知_Tony 阅读(135) 评论(0) 推荐(0) 编辑
补充篇:方法区&永久代&元空间
摘要:一、方法区 方法区在JVM中也是一个非常重要的区域,它与堆一样,是被线程共享的区域。在方法区中,存储了每个类的信息(包括类的名称、方法信息、字段信息)、静态变量、常量以及编译器编译后的代码等。 在Class文件中除了类的字段、方法、接口等描述信息外,还有一项信息是常量池,用来存储编译期间生成的字面量 阅读全文
posted @ 2021-05-19 22:49 格物致知_Tony 阅读(847) 评论(2) 推荐(1) 编辑
扩展篇:Java中的常量池(字符串常量池、class常量池和运行时常量池)
摘要:一、什么是常量 用final修饰的成员变量表示常量,值一旦给定就无法改变! final修饰的变量有三种:静态变量、实例变量和局部变量,分别表示三种类型的常量。 Java中的常量池,实际上分为两种形态:静态常量池和运行时常量池。 (1)所谓静态常量池,即*.class文件中的常量池,class文件中的 阅读全文
posted @ 2021-05-17 23:11 格物致知_Tony 阅读(1152) 评论(0) 推荐(0) 编辑
第十三章:StringTable
摘要:一、String 的基本特性 1、基本介绍 (1)String:字符串,使用一对" "引起来表示。 声明方式: String s1 = "Java"; //字面量的定义方式 String s2 = new String("JVM"); //构造器方式 (2)String声明为final的,不可被继承 阅读全文
posted @ 2021-04-22 22:35 格物致知_Tony 阅读(270) 评论(1) 推荐(0) 编辑
第十二章:执行引擎
摘要:一、执行引擎概述 1、执行引擎概述 执行引擎是Java虚拟机核心的组成部分之一。 “虚拟机”是一个相对于“物理机”的概念,这两种机器都有代码执行能力,其区别是物理机的执行引擎是直接建立在处理器、缓存、指令集和操作系统层面上的,而虚拟机的执行引擎则是由软件自行实现的,因此可以不受物理条件制约地定制指令 阅读全文
posted @ 2021-04-18 22:40 格物致知_Tony 阅读(101) 评论(0) 推荐(0) 编辑
第十一章:直接内存(Direct Memory)
摘要:一、直接内存概述 1、不是虚拟机运行时数据区的一部分,也不是《Java虚拟机规范》中定义的内存区域。 2、直接内存是在Java堆外的、直接向系统申请的内存区间; 3、来源于NIO,通过存在堆中的 DirectByteBuffer 操作 Native 内存; 4、通常,访问直接内存的速度会优于 Jav 阅读全文
posted @ 2021-04-15 23:13 格物致知_Tony 阅读(1074) 评论(0) 推荐(0) 编辑
第十章:对象的实例化内存布局与访问定位
摘要:一、对象的实例化 1、常见面试题 美团: ① 对象在 JVM是怎么存储的? ② 对象头信息里面有哪些东西? 蚂蚁金服: ① Java 对象头里有什么? 2、对象的实例化 3、对象实例化的几种方式 4、对象创建的步骤 前面所述是从字节码角度看待对象的创建过程,现在从执行步骤的角度来分析: (1)判断对 阅读全文
posted @ 2021-04-13 22:37 格物致知_Tony 阅读(120) 评论(0) 推荐(0) 编辑
第九章:方法区【重要】
摘要:一、栈、堆、方法区的交互关系 1、从线程共享与否的角度来看 2、栈、堆、方法区的交互关系 二、方法区的理解 1、官方文档 2.5.4. Method Area The Java Virtual Machine has a method area that is shared among all Ja 阅读全文
posted @ 2021-04-07 22:44 格物致知_Tony 阅读(112) 评论(0) 推荐(0) 编辑
第八章:堆【重要】
摘要:一、堆的核心概述 1、堆(Heap)的核心概述:堆的唯一性 (1)一个JVM实例只存在一个堆内存,堆也是Java内存管理的核心区域。 (2)Java堆区在JVM启动的时候即被创建,其空间大小也就确定了。是JVM管理的最大一块内存空间。 ① 堆内存的大小是可以调节的。 (3)《Java虚拟机规范》规定 阅读全文
posted @ 2021-04-04 16:39 格物致知_Tony 阅读(124) 评论(0) 推荐(0) 编辑
第七章:本地方法栈
摘要:一、本地方法栈(Native Method Stack) (1)Java虚拟机栈用于管理Java方法的调用,而本地方法栈用于管理本地方法的调用; (2)本地方法栈,也是线程私有的。 (3)允许被实现成固定或者是可动态扩展的内存大小。(在内存溢出方面是相同的) ① 如果线程请求分配的栈容量超过本地方法 阅读全文
posted @ 2021-04-04 16:19 格物致知_Tony 阅读(91) 评论(0) 推荐(0) 编辑
第六章:本地方法接口
摘要:一、本地方法 简单地讲,一个 Native Method 就是一个 Java 调用非 Java 代码的接口。一个 Native Method 是这样一个Java方法;该方法的实现由非 Java 语言实现,比如 C。这个特征并非 Java 所特有,很多其它的编程语言都有这一机制,比如在 C++中,你可 阅读全文
posted @ 2021-04-04 16:18 格物致知_Tony 阅读(88) 评论(0) 推荐(0) 编辑
第五章:虚拟机栈【重要】
摘要:一、虚拟机栈概述 1、虚拟机出现的背景 由于跨平台性的设计,Java 的指令都是根据栈来设计的。不同平台 CPU 架构不同,所以不能设计为寄存器的。 栈式架构的JVM: 优点是:跨平台,指令集小,编译器容易实现; 缺点是:性能下降,实现同样的功能需要更多的指令; 2、初步印象 有不少 Java 开发 阅读全文
posted @ 2021-04-04 16:16 格物致知_Tony 阅读(182) 评论(0) 推荐(1) 编辑
第四章:程序计数器(PC寄存器)
摘要:一、PC Register介绍 1、官方文档说明 官方地址:https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-2.html#jvms-2.5.1 2、PC Register概述 JVM 中的程序计数器(Program Counter Re 阅读全文
posted @ 2021-04-04 16:14 格物致知_Tony 阅读(1774) 评论(1) 推荐(1) 编辑
第三章:运行时数据区概述及线程
摘要:一、概述 1、整体流程 2、运行时数据区 内存是非常重要的系统资源,是硬盘和 CPU 的中间仓库及桥梁,承载着操作系统和应用程序的事实运行。JVM 内存布局规定了 Java 在运行过程中内存申请、分配、管理的策略,保证了 JVM 的高效稳定运行。不同的 JVM 对于内存的划分方式和管理机制存在这部分 阅读全文
posted @ 2021-04-04 16:12 格物致知_Tony 阅读(84) 评论(0) 推荐(1) 编辑
第二章:类加载子系统
摘要:一、内存结构概述 1、简图 2、详细图-EN 3、详细图-ZH 4、如果自动实现一个虚拟机需要什么结构呢? ① 类加载子系统; ② 执行引擎; 二、类加载器与类的加载过程 1、类加载子系统作用 类加载器子系统负责从文件系统或者网络中加载 Class 文件,class 文件在文件开头有特定的文件标识; 阅读全文
posted @ 2021-04-04 16:10 格物致知_Tony 阅读(108) 评论(0) 推荐(1) 编辑
第一章:JVM与Java体系结构
摘要:一、Java 上层技术与 JVM 1、高级语言 计算机系统体系对我们来说越来越远,在不了解底层实现方式的前提下,通过高级语言很容易编写程序代码。但事实上计算机并不认识高级语言。 2、Java VS C++ Java 语言给我们提供了内存动态分配和垃圾收集技术,使得我们不用过多的关注底层的细节。 垃圾 阅读全文
posted @ 2021-03-31 23:41 格物致知_Tony 阅读(250) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示