Java教程

JAVA内存空间

本文主要是介绍JAVA内存空间,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

JAVA内存:方法区内存,堆内存,栈内存

方法区内存:代码片段,静态变量
堆内存:实例变量(前面修饰符没有static)
栈内存:局部变量(前面修饰符由static)

局部变量运行阶段在栈上分配内存。
在这里插入图片描述详解:

  1. 堆内存和方法区内存各有一个,一个线程一个栈内存。
  2. 方法调用时,该方法所需要的内存空间在栈内存中分配,称为压栈。方法结束后,该方法所属的内存空间被释放,称为弹栈。
  3. 栈中主要存储的是方法体中的局部变量。 方法的代码片段以及整个类的代码片段都存储在方法区内存中,在类加载时这些片段会载入。
  4. 程序执行过程中使用new创建的对象存储在堆内存中,对象中的变量存储在堆内存中。
  5. 静态变量存储在方法区。
  6. 三块内存中变化最频繁的是栈内存,最先有数据的方法区内存,垃圾回收机制主要针对的是堆内存。
  7. 方法在调用的瞬间,会给该方法分配内存空间,压栈;方法结束后,给该方法分配的内存空间释放,弹栈。

在这里插入图片描述

垃圾回收器(GC)什么时候会考虑某个java对象的垃圾回收呢?

  • 当堆内的java对象成为垃圾时。

什么时候堆内存中的java对象会变成垃圾呢?

  • 没有更多的引用指向它的时候。
  • 这个对象无法被访问,因为访问对象只能通过引用的形式来访问。
这篇关于JAVA内存空间的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!