本文主要是介绍JAVA内存空间,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
JAVA内存:方法区内存,堆内存,栈内存
方法区内存:代码片段,静态变量
堆内存:实例变量(前面修饰符没有static)
栈内存:局部变量(前面修饰符由static)
局部变量运行阶段在栈上分配内存。
详解:
- 堆内存和方法区内存各有一个,一个线程一个栈内存。
- 方法调用时,该方法所需要的内存空间在栈内存中分配,称为压栈。方法结束后,该方法所属的内存空间被释放,称为弹栈。
- 栈中主要存储的是方法体中的局部变量。 方法的代码片段以及整个类的代码片段都存储在方法区内存中,在类加载时这些片段会载入。
- 程序执行过程中使用new创建的对象存储在堆内存中,对象中的变量存储在堆内存中。
- 静态变量存储在方法区。
- 三块内存中变化最频繁的是栈内存,最先有数据的方法区内存,垃圾回收机制主要针对的是堆内存。
- 方法在调用的瞬间,会给该方法分配内存空间,压栈;方法结束后,给该方法分配的内存空间释放,弹栈。
垃圾回收器(GC)什么时候会考虑某个java对象的垃圾回收呢?
什么时候堆内存中的java对象会变成垃圾呢?
- 没有更多的引用指向它的时候。
- 这个对象无法被访问,因为访问对象只能通过引用的形式来访问。
这篇关于JAVA内存空间的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!