JAVA虚拟机(JVM)

什么是JVM

JVM的内存模型

java代码运行示例:

堆和栈

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

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

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

内存泄漏和内存溢出

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

对象的生命周期

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

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

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

使用。

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

GC只会对堆进行GC吗

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

相关推荐
亚空间仓鼠16 分钟前
OpenEuler系统常用服务(五)
linux·运维·服务器·网络
开心码农1号24 分钟前
Java rabbitMQ如何发送、消费消息、全套可靠方案
java·rabbitmq·java-rabbitmq
蜡台33 分钟前
JetBrains IDEA 安装 卸载相关总结
java·ide·intellij-idea·注册码
WJLSH12333 分钟前
TomCat
java·tomcat
戮戮1 小时前
Spring Cloud Gateway 零拷贝参数校验:一种高性能网关架构实践
java·网络·架构·gateway
minji...1 小时前
Linux 线程同步与互斥(二) 线程同步,条件变量,pthread_cond_init/wait/signal/broadcast
linux·运维·开发语言·jvm·数据结构·c++
虚伪的空想家1 小时前
k8s集群configmap和secrets备份脚本
linux·容器·kubernetes
alengan1 小时前
cocos自动编译-Android自动出apk包
java·eclipse
漫霂1 小时前
二叉树的统一迭代遍历
java·算法
文静小土豆1 小时前
K8s 滚动更新在 Java 应用中的实践与优化
java·容器·kubernetes