JVM
文章平均质量分 94
stable_阿甘
用心学习,用心做事
展开
-
15. 线程安全和锁优化
本文介绍了线程安全和锁优化原创 2023-01-17 11:57:20 · 172 阅读 · 0 评论 -
14. Java内存模型与线程
本章介绍了Java内存模型原创 2023-01-17 11:48:11 · 141 阅读 · 0 评论 -
13. 后端编译与优化
后端编译与优化原创 2023-01-16 19:00:04 · 159 阅读 · 0 评论 -
11. 虚拟机字节码执行引擎
本文介绍了虚拟机字节码执行引擎原创 2023-01-16 18:54:43 · 154 阅读 · 0 评论 -
10. 类加载机制
本位介绍了类的加载机制原创 2023-01-16 18:47:37 · 962 阅读 · 0 评论 -
9. 垃圾收集器与内存分配策略
垃圾回收学习笔记原创 2023-01-15 09:35:30 · 151 阅读 · 0 评论 -
JVM对象对内存的影响
本文介绍了JVM对象以及常用的集合对内存的影响原创 2023-01-15 08:13:05 · 101 阅读 · 0 评论 -
8. StringTable
一、String 的存储结构和StringPool1.1 String存储结构变更 String在jdk9中底层不再使用char型数组,而是使用byte型数组,因为在实际开发中发现大多数字符串中存储的都是Lantin-1(每个字符一个字节),这些字符只需要1byte的空间就可以存储。1.2 String的基本特性字符串常量池中不会存储相同内容的字符串;String的String Pool是一个固定大小的Hashtable(里面只存储String的引用,并不存储实际内容,实际内容存储在运行时常量原创 2020-10-20 11:20:27 · 427 阅读 · 0 评论 -
7. 对象的实例化内存布局与访问定位
一、对象的实例化1.1 创建对象的步骤判断对象是否加载、链接、初始化虚拟机遇到一条new指令,首先回检查这个指令的参数能否在常量池中定位到一个类的符号引用,并且检查这个符号引用代表的类是否已经被加载、解析、初始化。如果没有,就执行相应类的加载过程。为对象分配内存如果内存是规整的: “指针碰撞”:把内存分为已使用和未使用的两部分,中间用指针分割,分配内存的时候就把指针向空闲方向移动一段与对象内存大小相等的距离。如果内存是不规整的: “空闲列表”:用一个列表记录哪些内存块是可用原创 2020-10-20 11:13:59 · 79 阅读 · 0 评论 -
6. JVM 方法区
一、方法区的理解1.1 方法区在哪里 虽然《JVM 虚拟机规范》把方法区描述为堆的一个逻辑部分,但是他还有一个别名叫做 Non-Heap(非堆),目的就是与堆分开来。所以,方法区可以看作独立于 JVM 堆的内存空间。1.2 方法区的基本理解方法区与堆一样,是各个线程共享的内存区域;方法区在JVM启动的时候被创建,JVM关闭时被释放它可以选择固定大小或者可扩展;方法区的大小决定了系统可以保存多少个类,如果系统定义了太多的类,导致方法区内存溢出,同样会报OOM Error。二、 方法区内原创 2020-10-20 11:11:11 · 115 阅读 · 0 评论 -
5. JVM 堆
一、堆的核心概述1.1 概念 Java 堆是虚拟机所管理的内存中最大的一块,它的唯一作用就是存放对象实例;因为它是垃圾回收器管理的内存区域,因此一些资料中也称它为 “GC 堆”。1.2 特点Java 堆是线程共享的;线程共享也不是绝对的,可以在共享的对空间中划分出多个线程私有的分配缓冲区(Thread Local Allocation Buffer,TLAB)方法结束后,堆中的对象并不会被马上溢出,仅仅在垃圾收集的时候才会被移除。这样做是因为防止频繁的 GC 影响性能1.3 堆的分区原创 2020-07-15 11:37:20 · 176 阅读 · 0 评论 -
4. JVM 栈
一、概述1.1 概念 JVM 栈描述的是每个线程 Java 方法执行的内存模型:每个方法被执行的时候,JVM 会同步创建一个栈帧用于存储局部变量表、操作数栈、动态链接、方法出口 等信息。 栈是运行时单位,而堆是存储的单位,即栈解决的是运行问题,即程序如何执行,或者如何处理数据,功能类似于计算机硬件 PC寄存器。堆解决的是数据存储的问题,即数据怎么放、放哪儿。1.2 特点访问速度快,仅次于程序计数器线程私有存在 OOM,不存在 GC1.3 栈的存储单位——栈帧 每个线程都有自己的栈原创 2020-07-15 11:31:30 · 216 阅读 · 0 评论 -
2. 类的加载机制
一、概述1.1 什么是类的加载机制 Java 虚拟机把描述类的数据从 Class 文件加载到内存,并对数据进行验证、转换解析和初始化,最终形成可以被虚拟机直接使用的 Java 类型,这个过程被称作类的加载机制。 Class 文件代表着 Java 语言中的一个类或者接口,它并非磁盘上的一个具体文件,而是一串二进制字节流,可以来源于本地磁盘、网络、数据库、内存或者动态产生。二、类加载发生的时机2.1 类的生命周期 类的生命周期包括:加载、验证、准备、解析、初始化、使用和卸载七个阶段。其中验证原创 2020-07-15 11:27:43 · 138 阅读 · 0 评论 -
1. 概述
一、Java 技术体系1.1 Java 技术体系的组成部分Java 语言各种硬件平台的虚拟机实现Class 文件格式(JVM 的底层支持)Java 类库 API来自商业机构和开源社区的第三方 Java 类库1.2 JDK 和 JRE JDK 和 JRE 是按照 Java 各个组成部分的功能来划分的:JDK:JDK 是用于支持 Java 程序开发的最小环境,包括 Java 语言、Java 虚拟机、Java 类库,所以可以用 JDK 来代替 Java 技术体系JRE:JRE 是支持原创 2020-07-15 11:25:19 · 224 阅读 · 0 评论