JAVA虚拟机(JVM)

什么是JVM

JVM的内存模型

java代码运行示例:

堆和栈

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

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

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

内存泄漏和内存溢出

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

对象的生命周期

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

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

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

使用。

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

GC只会对堆进行GC吗

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

相关推荐
云絮.3 分钟前
mybatis(二)
java·数据库·mybatis
西凉的悲伤4 分钟前
Guava-Retrying 重试框架详解
java·guava·重试框架·guava-retrying
水饺编程7 分钟前
第2章:Linux 基础,mkdir 命令的简单入门
linux·c语言·汇编
SunnyDays10117 分钟前
使用 Java 高效管理 Excel 批注:添加、读取、修改和删除
java·开发语言·excel
自变量yjs12 分钟前
Linux --- 线程控制
linux·运维·服务器
陌上花开缓缓归以25 分钟前
linux 内核4.4 内存分配使用分析
linux·运维·服务器
const_qiu32 分钟前
第 2.5 章 2.5.8:质量关 —— 安全审查、UI/UX 审查与踩坑复盘
java·人工智能·安全·ui·ux
chde2Wang38 分钟前
hadoop部署错误-namenode address dfs.namenode.servicerpc-address not configured
java·大数据·hadoop
牛战士coding1 小时前
Java 对象写入 Redis 后类型变了?Jackson 多态序列化问题复盘
java·开发语言·redis
小白的码BUG之路1 小时前
Jenkins -- 配置jdk和maven
java·jenkins·maven