JVM-Heap堆和Native Method Stacks本地方法栈
简单理解一下JVM有那些部分组成如下:
由于本地方法栈过于简单,就是调用底层C/C++语言代码的存放的地方
如Object里面的public native int hashCode()中有带native关键字都是属于调用底层方法,存储在本地方法栈
经过前面的虚拟机栈和程序计数器还有本地方法栈都有共同点就是私有的,而本次学习堆和方法区都是共享的
Heap堆
*通过new关键字,创建对象都会使用堆内存
特点:
*它是线程共享的,堆中对象都需要考虑线程安全的问题
*堆里有垃圾回收机制(堆中不在给指针指向是垃圾回收机制会自动回收)
堆溢出问题(就算有垃圾回收机制也会栈溢出)如下:
a经过22次方的相加hello后,当执行到第23次的时候,显示栈溢出。
因为a和list不是垃圾,垃圾回收并没有把他们标记垃圾回收导致栈溢出