JAVA虚拟机(JVM)

什么是JVM

JVM的内存模型

java代码运行示例:

堆和栈

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

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

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

内存泄漏和内存溢出

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

对象的生命周期

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

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

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

使用。

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

GC只会对堆进行GC吗

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

相关推荐
无敌最俊朗@2 小时前
如何把qt + opencv的库按需要拷贝到开发板
linux·qt
祈祷苍天赐我java之术3 小时前
Redis 有序集合解析
java·前端·windows·redis·缓存·bootstrap·html
NiKo_W3 小时前
Linux 进程通信——匿名管道
linux·运维·服务器
Mr.Ja4 小时前
【LeetCode热题100】No.1——两数之和(Java)
java·算法·leetcode
编啊编程啊程4 小时前
gRPC从0到1系列【20】
java·rpc·kafka·dubbo·nio
diqiudq4 小时前
用AMD显卡节省nVidia显卡显存占用
linux·深度学习·ubuntu·显存释放
励志不掉头发的内向程序员5 小时前
【Linux系列】并发世界的基石:透彻理解 Linux 进程 — 进程状态
linux·运维·服务器·开发语言·学习
万邦科技Lafite6 小时前
如何对接API接口?需要用到哪些软件工具?
java·前端·python·api·开放api·电商开放平台
1710orange6 小时前
java设计模式:静态代理模式
java·设计模式·代理模式
小龙报6 小时前
《KelpBar海带Linux智慧屏项目》
linux·c语言·vscode·单片机·物联网·ubuntu·学习方法