java堆栈

java的堆和栈都是用来在RAM中存放数据的地方,RAM - random access memory

java的栈(stack)一般都是用来存储原始数据类型的,因为这些类型的值大小和生命周期是可知的,栈的读取速度都比较快。栈的特点是任何字面值实际都只存一份,然后可以有不同的引用来指向它。

java的堆(heap)比栈要慢,是用来存取类对象的。

理解JVM的内存分配和GC主要应该了解JVM堆的数据结构和garbage collector类型。
以及如何评测我们的程序在GC上遇到了瓶颈和如何去解决。

JVM heap是分为三代的young, old, permanent
young中又划分为eden, survivor,space
不同生命周期的对象分别存放在不同的代中,每一次gc,minor gc或者major gc都会把garbage回收,并把存活的对象copy到下一个代中。

理解四种garbage collector, 每种collector的回收算法都不相同,适用于不同的场景。

请参考上一篇博客:
http://shixin42.iteye.com/blog/1680805

java官方文档:
http://www.oracle.com/technetwork/java/javase/gc-tuning-6-140523.html#ergonomics
http://www.oracle.com/technetwork/java/javase/tech/vmoptions-jsp-140102.html

猜你喜欢

转载自shixin42.iteye.com/blog/1680789