一、摘要在之前的文章中,我们介绍了对象的创建过程,以及运行期的相关优化手段。本文主要介绍对象回收的判定方式以及垃圾对象的回收算法等相关知识。下面我们一起来了解一下。二、对象回收判定方式当一个对象被创建时,虚拟机会优先分配到堆空间中,当对象不再被使用了,虚拟机会对其进行回收处理,以便释放内存空间,这个过程也被称为垃圾对象回收。那么如何找到对象是否可以进行回收呢 ......
289
0
0
2024-06-11
多语言编译为字节码在JVM运行计算机是不能直接运行java代码的,必须要先运行java虚拟机,再由java虚拟机运行编译后的java代码。这个编译后的java代码,就是本文要介绍的java字节码。为什么jvm不能直接运行java代码呢,这是因为在cpu层面看来计算机中所有的操作都是一个个指令的运行汇集而成的,java是高级语言,只有人类才能理解其逻辑,计算机 ......
247
0
0
2024-04-02
Java源代码使用 Javac 编译器编译成class文件,然后交给JVM执行。但是 JVM 不仅具有平台无关性,还具有语言无关性,class文件是jvm运行的基石,无论上层是Java还是Kotlin,JVM只认识class文件,只要class文件符合JVM的规范就能运行。 class文件class文件是二进制文件,它的内容具有严格的规范,文件中没有任何空格 ......
225
0
0
2024-03-21
大家好,我是不才陈某~上周知识星球的小伙伴面了阿里,在二面中被问到GC日志分析,感觉回答的不是很好,过来找我复盘,大致听了他的回答,虽然回答出了部分,但是没抓到重点。GC日志分析算是JVM调优中比较难的部分,今天这篇文章就来聊聊如何利用JDK现有的命令并且借助可视化工具如何去分析GC日志。JVM调优实践JVM实践调优主要步骤默认的策略是最普用,但不是最佳的。 ......
247
0
0
2024-03-04
JVM模型Class Loader类加载器负责加载class文件,class文件在文件开头有特定的文件标识,并且ClassLoader只负责class文件的加载,至于它是否可以运行,则由Execution Engine决定。Method Area方法区(永久区)方法区是被所用的线程共享,所有字段和方法字节码,以及一些特殊方法如构造函数,接口代码也是再此定义。 ......
286
0
0
2024-02-26
1.JDK、JRE、JVM关系?Jdk (Java Development Kit) : java语言的软件开发包。包括Java运行时环境Jre。Jre (Java Runtime Environment) :Java运行时环境,包括Jvm。Jvm (Java Virtual Machine) :一种用于计算机设备的规范。Java语言在不同平台上运行时不需要 ......
253
0
0
2024-02-23
Tech 导读 JAVA简单易用的特性,能够让研发人员在不了解JVM的底层运行机制的情况下依旧能够编写出功能完善的代码。但是对JVM的理解,是一个程序员普通和优秀的分水岭。全面地了解JVM的工作原理,能够更好地优化自己的代码,并解决一些潜在的性能问题。本文将从原理聊起,把JVM的内存分配、GC、编译等知识进行分析和总结。01JVM运行时内存划分在今年的敏捷团 ......
230
0
0
2024-02-01
本文最后更新于 2 天前,其中的信息可能已经有所发展或是发生改变。本篇为深入理解 Java 虚拟机第二章内容,推荐在学习前先掌握基础的 Linux 操作、编译原理、计算机组成原理等计算机基础以及扎实的 C/C++ 功底。该系列的 GitHub 仓库:https://github.com/Doge2077/learn-jvm运行时数据区域Java 虚拟机在执行 ......
243
0
0
2024-01-09
JVM-虚拟机-GC及内存分配策略什么是GC?为啥要了解GC?GC就是垃圾回收,它的主要作用就是回收程序中不再使用的内存. GC对性能有影响,不同场景使用不同的GC策略有助于提高系统性能 了解GC机制能更好的编写代码 面试 判断对象是否存活JVM执行GC内存回收的时候如何判断内存是否可以回收呢,就是看对象是否还存活,如果不存活则回收对象对一个的内存空间 那 ......
235
0
0
2024-01-01
java 虚拟机的内存空间分为 5 个部分: 程序计数器 Java 虚拟机栈 本地方法栈 堆 方法区 jdk 1.8 同 JDK 1.7 比,最大的差别就是:元数据区取代了永久代。元空间的本质和永久代类似,都是对 JVM 规范中方法区的实现。不过元空间与永久代之间最大的区别在于:元数据空间并不在 虚拟机 中,而是使用本地内存。 程序计数器 (PC ......
287
0
0
2023-12-31
我很喜欢祖师爷的这句话,我觉得只有了解了最核心的技术,才算得上是精通了这门技术。当精通某项技术之后,在这个体系下的一切,学习、运用、创造才能做到游刃有余、手到擒来;才能更好的发挥个人和想象和创造力,做出更有价值的事情。当我们从一个Java学徒,逐步会运用Java语言编写项目的,只要1-2年时间,过几年后,也许大家和我会有同样的感觉,这门语言可以想象和发挥的空 ......
334
0
0
2023-12-20
文章目录: 讲一下 JVM 内存结构?Java 内存模型(JMM)是基于共享内存的多线程通信机制。 JVM内存结构 = 类加载器 + 执行引擎 + 运行时数据区域。 image-20210905150636105 程序计数器 程序计数器 主要有两个作用: 当前线程所执行的 字节码 的行号指示器,通过改变它实现代码的流程控制,如:顺序执行、选择、循环、 ......
242
0
0
2023-12-19
引言对象实例的角度,阐述一个 java 对象从生到死的历程、 Java 对象在内存中的布局以及对象引用类型。一、Java对象在内存中的布局Java源代码中,使用new关键字创建出的对象实例,我们都知道在运行时会被分配到内存上存储,但分配的时候是直接在内存中“挖”一个对应大小的坑,然后把对象实例丢进去存储吗?其实并不然,Java对象一般在内存中的布局通常由对象 ......
234
0
0
2023-12-09
注意: 篇幅较长,建议收藏后再仔细阅读!!!!!!!!!! 目录:一.引言二.基础故障处理工具 2.1 概述 2.2. jps:虚拟机进程状况工具 2.3. jstat:虚拟机统计信息监视工具 2.3. jinfo: java 配置信息工具 2.5. jmap:Java内存映像工具 2.7. jstack:Java堆栈跟踪工具 2.8. 基础工具总结三 ......
481
0
0
2023-12-04
文章目录一、 Java 内存区域 1.1 说一下 JVM 的主要组成部分及其作用? 1.2 说一下 JVM 运行时数据区 1.3 详细的介绍下 程序计数器 ? 1.4 详细介绍下 java 虚拟机栈? 1.5 一个方法调用另一个方法,会创建很多栈帧吗?递归的调用自己会创建很多栈帧吗? 1.6 你能给我详细的介绍Java堆吗? 1.7 能不能解释一下本地方法 ......
224
0
0
2023-11-23