JVM
文章平均质量分 83
JVM完整体系学习、包含GC调优、内存优化、大厂面试等内容。持续更新。共同学习。
头顶凉凉先生丶
能让你在IT行业走下去的,是对知识的渴求与无数个孤独寂静深夜中的思考与沉淀。
展开
-
一篇文章掌握整个JVM,JVM超详细解析。【持续更新 康师傅yyds】
JVM整体知识体系深度学习一、JVM与Java体系结构。前言是否遇到过一下问题。运行的线上系统突然卡死,系统无法访问,甚至直接OOM【OutOfMemory 内存溢出】JVM GC问题新项目上线前、JVM参数设置。JVM面试原理概念性东西不清楚。调优、GC问题等解决方案不了解。垃圾收集机制为我们打理了很多繁琐的工作、大大提高了开发的效率 。但是垃圾收集也不是万能的,懂得JVM内部的内存结构、工作机制,是设计高拓展性应用和诊断运行时问题的基础,也是Java工程师进阶的必备能力。原创 2022-05-19 09:21:24 · 2480 阅读 · 0 评论 -
JVM整体知识体系深度学习__对象的实例化内存布局与访问定位【持续更新】
十、对象的实例化内存布局与访问定位。1、对象的实例化对象创建方式new创建对象是最常见的方法、其他还有Xxx的静态方法、XxxBuilder/XxxFacroty的静态方法。Class的newInstance() : 反射的方式、只能调用空参的构造器,权限必须是public。Constructor的newInstance(Xxx) : 反射的方式。可以调用空参、或者带参的构造器。权限没有要求。clone() : 不调用任何构造器,当前类需要实现Cloneable接口,实现clone()方法原创 2022-05-17 00:03:33 · 242 阅读 · 0 评论 -
JVM整体知识体系深度学习__直接内存【持续更新】
十一、直接内存 【Direct Memory】不是虚拟机运行时数据区的一部分,也不是《Java虚拟机规范》中定义的内存区域。直接内存是在Java堆外的、直接向系统申请的内存区间。来源于NIO ,通过存在堆中的DirectByteBuffer操作Native内存通常,访问直接内存的速度会优于Java堆。即读写性能高。因此出于性能考虑,读写频繁的场合可能会考虑使用直接内存。Java的NIO库允许Java程序使用直接内存,用于数据缓冲区传统文件读取写入操作过程。JVM写入数据到物理磁盘。首先要写原创 2022-05-17 00:01:51 · 92 阅读 · 0 评论 -
JVM整体知识体系深度学习__方法区【持续更新】
九、方法区【重点】9.1、栈、堆、方法区的交互关系整体数据区情况9.2、方法区的理解《Java虚拟机规范》中明确说明:"尽管所有的方法区在逻辑上是属于堆的一部分,但一些简单的实现可能不会选择去进行垃圾收集或者进行压缩。” 但对于Hot Spot JVM而言,方法区还有一个别名叫做Non-Heap(非堆),目的就是要和堆分开。所以,方法区看作是一块独立于Java堆的内存空间。方法区(Method Area)与ava堆一样,是各个线程共享的内存区域。方法区在JVM启动的时候被创建,并原创 2022-05-16 17:15:55 · 155 阅读 · 0 评论 -
JVM整体知识体系深度学习__本地方法栈与本地方法接口【持续更新】
六、本地方法接口6.1、所处位置6.2、什么是本地方法? 一个Native Method就是一个Java调用非Java代码的接口。一个Native Method是这样一个Java方法:该方法的实现由非Java语言实现。比如C语言。这个特征并非Java所特有,很多其他的变成语言都有这样一个机制。比如在C++中,你可以用extern ‘C’ 告知C++编译器区调用一个C的函数。 在定义一个native method时,并不提供实现体(有些像定义一个Java interface) ,因为其实现体是由原创 2022-05-14 23:01:51 · 97 阅读 · 0 评论 -
JVM整体知识体系深度学习__堆【持续更新】
八、堆 (Heap)【重点】8.1、堆的核心概述一个JVM实例只存在一个堆内存、堆也是Java内存管理的核心区域。进行验证JVM是否与堆内存一一对应。设置两个线程。分别设置他们最大最小堆空间。-Xms10m -Xmx10m-Xms20m -Xmx20m在JDK的bin包中找到 jvisualvm.exe 执行.另外一种查看方式 IDEA里插件里安装VisualGC 重新运行IDEA从右下角可以看到查看窗口。Java堆区在JVM启动的时候即被创建、其原创 2022-05-14 22:56:36 · 152 阅读 · 0 评论 -
JVM整体知识体系深度学习__虚拟机栈【持续更新】
五、虚拟机栈5.1、虚拟机栈出现的背景由于跨平台型的设计、Java的指令都是根据栈来设计的。不同平台CPU架构不同、所以不能设计为基于寄存器的。优点是跨平台,指令集小,编译器容易实现,缺点是性能下降。实现同样的功能需要更多的指令。5.2、内存中的栈与堆栈是运行时的单位、而堆是存储的单位栈解决程序的运行问题、即程序如何执行、或者说如何处理数据,堆解决的是数据存储的问题,即数据怎么放、放在哪里.5.3、简介Java虚拟机栈是什么Java虚拟机栈(Java Virtual Machine S原创 2022-05-13 18:04:26 · 301 阅读 · 0 评论 -
JVM整体知识体系深度学习__程序计时器 (PC寄存器)【持续更新】
四、程序计时器 (PC寄存器)4.1、简介- JVM中的程序计数寄存器(Program Counter Register)中,Register的命名源于CPU的寄存器,寄存器存储指令相关的现场信息。CPU只有把数据装载到寄存器才能运行。- 这里的寄存器、并非广义上所指的物理寄存器,或许将其翻译为PC计数器会桁架贴切(也称程序钩子),并且也不容易引起不必要的误会。**JVM中的PC寄存器是对物理PC寄存器的一种抽象模拟**。作用: PC寄存器用来存储指向下一条指令的地址。也就是将要执行的指原创 2022-05-12 23:48:20 · 241 阅读 · 0 评论 -
JVM整体知识体系深度学习__运行时数据区概述及线程【持续更新】
三、运行时数据区概述及线程JDK1.8之后数据区。【在下面详细介绍】3.1、内存的概念 内存是非常重要的系统资源,是硬盘和CPU的中间仓库及桥梁,承载着操作系统和应用程序的实时运行。JVM内存布局规定了Java在运行过程中内存申请、分配、管理的策略。保证了JVM的高效稳定运行。不同的JVM对于内存的划分方式和管理机制存在着部分差异。结合JVM虚拟机规划,来探讨一下经典的JVM内存布局。3.2、数据区内部线程所属 Java虚拟机定义了若干种程序运行期间会使用到的运行时数据区,其中有一些会原创 2022-05-12 23:47:16 · 81 阅读 · 0 评论 -
JVM整体知识体系深度学习__类加载子系统【持续更新】
二、类加载子系统1.1、内存结构1.2、类加载器与类加载过程1、类加载器:类加载器子系统负责从文件系统或网路中加载Class文件,class文件在文件开头有特定的文件标识。【CA FE BA BE】ClassLoader只负责class文件的加载,至于它是否可以运行,则由Execution Engine决定。加载的类信息存放在一块称为方法区的内存空间。除了类的信息外、方法区中还会存放运行时常量池信息,可能还包括字符串字面量和数字常量(这部分常量信息是Class文件中常量池部分的内存映射)原创 2022-05-12 19:07:27 · 93 阅读 · 0 评论 -
JVM整体知识体系深度学习__JVM与Java体系结构【持续更新】
JVM整体知识体系深度学习一、JVM与Java体系结构。前言是否遇到过一下问题。运行的线上系统突然卡死,系统无法访问,甚至直接OOM【OutOfMemory 内存溢出】JVM GC问题新项目上线前、JVM参数设置。JVM面试原理概念性东西不清楚。调优、GC问题等解决方案不了解。垃圾收集机制为我们打理了很多繁琐的工作、大大提高了开发的效率 。但是垃圾收集也不是万能的,懂得JVM内部的内存结构、工作机制,是设计高拓展性应用和诊断运行时问题的基础,也是Java工程师进阶的必备能力。原创 2022-05-11 20:52:47 · 376 阅读 · 0 评论