什么是JVM

JVM的内存模型

java代码运行示例:


堆和栈

栈 主要用于存储局部变量、方法调用的参数、方法返回地址以及一些临时数据。每当一个方法被
调用,一个栈帧就会在栈中创建,用于存储该方法的信息,当方法执行完毕,栈帧也会被移除。
堆用于存储对象的实例(包括类的实例和数组)。当你使用 new关键字创建一个对象时,对象的实例就会在堆上分配空间。
内存泄漏和内存溢出
对比项 | 内存泄漏(Memory Leak) | 内存溢出(Memory Overflow) |
---|---|---|
本质 | 无用对象未被回收,占用内存 | 内存需求超过 JVM 最大限制,无法分配内存 |
表现 | 内存缓慢增长,长期运行后出问题 | 直接抛出 OOM,程序崩溃 |
对象的生命周期
对象的生命周期包括创建、使用和销毁三个阶段:
· 创建:对象通过关键字new在堆内存中被实例化,构造函数被调用,对象的内存空间被分配。
· 使用:对象被引用并执行相应的操作,可以通过引用访问对象的属性和方法,在程序运行过程中被不断
使用。
· 销毁:当对象不再被引用时,通过垃圾回收机制GC自动回收对象所占用的内存空间。
GC只会对堆进行GC吗
JVM的垃圾回收器不仅仅会对堆 进行垃圾回收,它还会对方法区进行垃圾回收。