JAVA虚拟机(JVM)

什么是JVM

JVM的内存模型

java代码运行示例:

堆和栈

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

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

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

内存泄漏和内存溢出

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

对象的生命周期

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

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

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

使用。

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

GC只会对堆进行GC吗

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

相关推荐
不穿格子的程序员26 分钟前
从零开始刷算法-栈-括号匹配
java·开发语言·
lkbhua莱克瓦2441 分钟前
Java练习-正则表达式 1
java·笔记·正则表达式·github
yue00843 分钟前
C#类继承
java·开发语言·c#
qq_401700411 小时前
I.MX6U 启动方式详解
linux
凯芸呢1 小时前
Java中的数组(续)
java·开发语言·数据结构·算法·青少年编程·排序算法·idea
竹竹零1 小时前
JacksonUtil--序列化与反序列化
java·开发语言·windows
钱多多_qdd2 小时前
基础篇:IoC(三):Bean实例化策略InstantiationStrategy
java·spring
float_com2 小时前
【java基础语法】---- 综合训练
java
Dyan_csdn2 小时前
springboot系统设计选题3
java·spring boot·后端
sheji34162 小时前
【开题答辩全过程】以 基于Java的旅游网站的设计与开发为例,包含答辩的问题和答案
java·开发语言·旅游