摘要: 1、对象的存储:Java中所有对象的存储空间都是在堆中分配的,但是这个对象的引用却是在堆栈中分配,也就是说在建立一个对象时从两个地方都分配内存,在堆中分配的内存实际建立这个对象,而在堆栈中分配的内存只是一个指向这个堆对象的指针(引用)而已。堆的特点是灵活性,但为此牺牲了高效性,可以在运行时动态地分配存储;堆栈的特点是高效性,但缺乏灵活性,在编译时刻必须知道所要分配的空间大小。堆像个大馒头,可以根据你的食量随便吃,吃饱了算;堆栈像是吃大锅饭,每个人都是定食定量的,你必须告诉厨子你的饭量,厨子据此做饭,然后你们就排队打饭吧。它们没有孰优孰劣之分,各自不同特点有不同的应用。
阅读全文