![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
JVM
文章平均质量分 80
Longtermevolution
人生不要太匆匆,不急,慢慢来吧
展开
-
JVM的内存划分
目录JVM的内存划分JVM的内存划分另外可参考:https://zhuanlan.zhihu.com/p/336958119程序计数器(Program Counter Register)。在JVM规范中,每个线程都有自己的程序计数器。这是一块比较小的内存空间,存储当前线程正在执行的Java方法的JVM指令地址,即字节码的行号。如果正在执行Native方法,则这个计数器为空。该内存区域是唯一一个在Java虚拟机规范中没有规定任何OOM情况的内存区域。Java虚拟机栈(Jav.原创 2021-02-25 21:57:47 · 121 阅读 · 2 评论 -
虚拟机类加载机制
目录引言类加载的周期类加载器类与类加载器双亲委派模型破坏双亲委派模型引言如前文所述:java中.class文件的一些知识Class文件(本质是一串具有特定格式的二进制流)一旦生成,JVM如何加载这些文件呢?这就需要讲到虚拟机的类加载机制。类加载机制定义:虚拟机把描述类的数据从Class文件中加载到JVM内存,并对数据进行校验、转换解析和初始化,最终形成可以被虚拟机直接使用的java类型。类加载的周期notes:五个确定顺序步骤:其中颜色标注的步骤,顺序确定原创 2021-02-25 21:09:35 · 122 阅读 · 0 评论 -
JVM中的垃圾回收算法总结
引言与c++相比,java的内存管理依托于JVM,而不是依托于程序员直接管理。关于在JVM中垃圾回收的内容,本文做一个简单的总结,供自己查阅。目前内存的动态分配和内存回收技术已经相当成熟。为什么还需要去了解GC和内存分配呢?因为:当需要排查各种内存溢出、内存泄漏问题时,当垃圾收集成为系统达到更高并发量的瓶颈时,就需要对这些看起来很自动化的技术进行必要的监控和调节。JVM中运行时区域中,程序计数器、虚拟机栈、本地方法栈这3个区域随着线程生而生,线程灭而灭,因此基本上随着方法结束或者线程结束,相应的原创 2021-02-25 17:31:57 · 110 阅读 · 0 评论 -
java中.class文件的一些知识
目录引言class类文件的结构class文件的生存周期结语引言class文件即是字节码(字节码是一种能够在所有平台统一使用的程序存储格式)文件,其本质是供JVM进行编译包含特定格式二进制流的磁盘文件,这是实现java跨平台编译的基础之一(另一个基础就是JVM)。在程序编译的流程上,其来源具有多源性(可能是多种语言(如java程序、JRuby程序、Groovy程序、其他等),实现了JVM的跨语言编译),class文件是提供给JVM进行编译的文件;在文件内容上,其保存的是Java原创 2021-02-01 11:18:24 · 339 阅读 · 0 评论 -
java 内存
参考:https://zhuanlan.zhihu.com/p/427179131、运行时数据区程序计数器 java虚拟机栈 本地方法栈 堆 方法区 运行时常量池2、创建对象3、堆内存中的垃圾回收:1)图解垃圾回收机制2)采用的垃圾回收算法:JVM的4种垃圾回收算法、垃圾回收机制与总结...原创 2020-10-22 15:21:08 · 89 阅读 · 0 评论 -
java中的.class文件的生存周期是怎样的(即类加载到类释放的过程)
目录1、一个类的生命周期2、主动引用和被动引用3、什么时候类(.class)被释放?1、一个类的生命周期字节码文件(.calss文件)从被JVM开始执行到释放,需要经历如下过程:一个java类的完整的生命周期会经历加载、连接、初始化、使用、和卸载五个阶段,当然也有在加载或者连接之后没有被初始化就直接被使用的情况,如图所示:java的类加载后且当使用阶段完成之后,java类就进入了卸载阶段,也就是所谓的释放zhi。2、主动引用和被动引用被使用一般分为两种情况:.原创 2020-08-07 10:38:48 · 579 阅读 · 0 评论 -
Java 一个对象什么时候被回收
在 Java 语言中,可作为 GC Roots 的对象包括下面几种:虚拟机栈(栈帧中的本地变量表)中引用的对象。 方法区中类静态属性引用的对象。 方法区中常量引用的对象。 本地方法栈中 JNI(即一般说的 Native 方法)引用的对象。...原创 2020-08-06 21:54:40 · 1602 阅读 · 0 评论 -
java 中作为根节点
GC Roots根对象摘自《深入理解Java虚拟机》在Java语言中,可作为GC Root的对象包括以下几种:虚拟机栈(栈桢中本地变量表)中引用的对象 方法区中类静属性引用的对象 方法区中常量引用的对象 本地方法栈中JNI(即一般说的Navite方法)中引用的对象...原创 2020-08-06 21:59:37 · 380 阅读 · 0 评论 -
从代码执行的角度理解JVM -- 各个部件及其之间的协作
参考1(这个相对完整,可以直接进去看详细),本文主要基于这篇文章进行个人的理解。目录前言:1、一段代码如何通过JVM在一台计算机上执行前言:首先需要知道JVM是一个虚拟机。而虚拟机呢,可以安装操作系统,然后通过操作系统的指令和底层硬件打交道。JVM是Java Virtual Machine(Java虚拟机)的缩写。既然是虚拟机,则需要建立在操作系统之上。JVM有很多种,目前被运用最广泛的为HOTSPOT,本文以HOTSPOT虚拟机来讲,所以接下来的JVM均为HOTSPOT。.原创 2020-08-02 16:13:11 · 197 阅读 · 0 评论