JAVA虚拟机(JVM)

什么是JVM

JVM的内存模型

java代码运行示例:

堆和栈

主要用于存储局部变量、方法调用的参数、方法返回地址以及一些临时数据。每当一个方法被

调用,一个栈帧就会在栈中创建,用于存储该方法的信息,当方法执行完毕,栈帧也会被移除。

用于存储对象的实例(包括类的实例和数组)。当你使用 new关键字创建一个对象时,对象的实例就会在堆上分配空间。

内存泄漏和内存溢出

对比项 内存泄漏(Memory Leak) 内存溢出(Memory Overflow)
本质 无用对象未被回收,占用内存 内存需求超过 JVM 最大限制,无法分配内存
表现 内存缓慢增长,长期运行后出问题 直接抛出 OOM,程序崩溃

对象的生命周期

对象的生命周期包括创建、使用和销毁三个阶段:

· 创建:对象通过关键字new在堆内存中被实例化,构造函数被调用,对象的内存空间被分配。

· 使用:对象被引用并执行相应的操作,可以通过引用访问对象的属性和方法,在程序运行过程中被不断

使用。

· 销毁:当对象不再被引用时,通过垃圾回收机制GC自动回收对象所占用的内存空间。

GC只会对堆进行GC吗

JVM的垃圾回收器不仅仅会对 进行垃圾回收,它还会对方法区进行垃圾回收。

相关推荐
Ghost Face...3 分钟前
PCI总线配置核心实现与架构解析
linux·运维·架构
上弦月-编程4 分钟前
Java类与对象:编程核心解密
java·开发语言·jvm
Kapaseker6 分钟前
为什么 Java 的数组需要 new 出来
android·java·kotlin
Dicky-_-zhang12 分钟前
线上故障排查与应急响应实战:从零开始建立你的SRE体系
java·jvm
大大杰哥12 分钟前
从 Volatile 到 ThreadLocal:Java 线程安全机制备忘
java·开发语言·jvm
AI人工智能+电脑小能手19 分钟前
【大白话说Java面试题 第67题】【JVM篇】第27题:生产环境服务器变慢,诊断思路和性能评估谈谈?
java·服务器·jvm·面试
半夜修仙21 分钟前
Redis中Set数据类型的常见命令
java·数据库·redis·笔记·学习
SuniaWang22 分钟前
AgentX 专栏-00前言:一个Java开发者的Agent实践之路
java·人工智能·spring boot·langchain·系统架构
曾阿伦23 分钟前
Linux 系统资源查看命令大全
linux·运维·服务器
全栈游侠25 分钟前
DRM驱动分析01 - 初始化
linux