摘要:
# JVM垃圾回收 ## 1.概述 JVM(Java虚拟机)的垃圾回收是自动管理内存的过程,用于回收不再使用的对象并释放内存资源。早在1960年,第一门开始使用内存动态分配和垃圾收集技术的Lisp语言诞生。这种自动化的内存管理机制极大地减轻了开发人员对手动释放内存的负担,提高了开发效率。 ### 1 阅读全文
摘要:
深入理解String String是Java中的一个类,是一个引用类型,用于表示字符串。它是不可变的(immutable),即一旦创建,其值就不能被修改。任何对String对象的修改操作都会创建一个新的String对象,而不是在原有字符串上进行修改。 1.基本特点 不可变性(Immutability 阅读全文
摘要:
# JVM-对象实例化 ## 1.创建对象的方式 - new:最常见的方式、Xxx的静态方法,XxxBuilder/XxxFactory的静态方法 - Class的newInstance方法:反射的方式,只能调用空参的构造器,权限必须是public - Constructor的newInstance 阅读全文
摘要:
# JVM方法区 《Java虚拟机规范》中明确说明:“尽管所有的方法区在逻辑上是属于堆的一部分,但一些简单的实现可能不会选择去进行垃圾收集或者进行压缩。“但对于HotSpotJVM而言,方法区还有一个别名叫做Non-Heap(非堆),目的就是要和堆分开。方法区看作是一块独立于Java堆的内存空间。 阅读全文
摘要:
# JVM运行时数据区之堆空间 ## 1.核心概述 一个JVM实例只存在一个堆内存,堆也是Java内存管理的核心区域。堆区在**JVM 启动的时候即被创建**,其空间大小也就确定了,是**JVM管理的最大一块内存空间**。 《Java虚拟机规范》中对Java堆的描述是:所有的对象实例以及数组都应当在 阅读全文
摘要:
# JVM虚拟机栈 ## 1.概述 ### 1.1背景 - 由于跨平台性的设计,Java的指令都是根据栈来设计的。不同平台CPU架构不同,所以不能设计为基于寄存器的。 - 优点是跨平台,指令集小,编译器容易实现,缺点是性能下降,实现同样的功能需要更多的指令 ### 1.2概念 **JVM虚拟机栈是J 阅读全文
摘要:
# JVM程序计数器 ## 1.介绍 JVM中的程序计数寄存器 (Proqram Counter Register)中,Reqister 的命名源于CPU的寄存器,寄存器存储指令相关的现场信息。 CPU只有把数据装载到寄存器才能够运行 这里,并非是广义上所指的物理寄存器,或许将其翻译为PC计数器(或 阅读全文
摘要:
# JVM运行时数据区 ## 1.概述 内存是非常重要的系统资源,是硬盘和CPU 的中间仓库及桥梁承载着操作系统和应用程序的实时运行。JVM内存布局规定了Java在运行过程中内存申请、分配、管理的策略,保证了JVM的高效稳定运行不同的JVM对于内存的划分方式和管理机制存在着部分差异。 下图是经典的J 阅读全文
摘要:
# 双亲委派机制 Java虚拟机对class文件采用的是按需加载的方式,也就是说当需要使用该类时才会将它的class文件加载到内存生成class对象。而且加载某个类的class文件时,Java虚拟机采用的是双亲委派模式,即把请求交由父类处理,它是一种任务委派模式 ## 一.工作原理: 1)如果一个类 阅读全文
摘要:
# JVM类的加载和类的加载器 ## 一.类的加载过程 类的加载指的是将类的.class文件中的二进制数据读入到内存中,将其放在运行时数据区的方法区内,然后在堆区创建一个java.lang.Class对象,用来封装类在方法区内的数据结构。类的加载的最终产品是位于堆区中的Class对象,Class对象 阅读全文