java内存机制主要分为两种,一种叫做堆内存,一种叫做栈内存。那么他们分别是用来存储什么的呢?
栈内存主要是用来存储我们的引用变量的,什么是引用变量呢?很简单比如List a=new ArrayList()中a就是我们的引用变量。JVM在创建对象时会在栈内存中分配一个a引用,a存储new ArrayList()在堆内存中的地址。而我们的堆内存就用来存储对象的属性值。通过引用变量来获得这些属性值。
那么什么时候JVM回收内存呢?
栈内存中的内存:一旦引用超过其作用于JVM就会回收引用所占的内存。
堆内存中的内存:一旦没有引用指向该内存,那么JVM就会在适当的时候回收内存。