當前位置:成語大全網 - 新華字典 - java哪些數據存在堆裏哪些數據存在棧裏

java哪些數據存在堆裏哪些數據存在棧裏

棧與堆都是Java用來在Ram中存放數據的地方。與C++不同,Java自動管理棧和堆,程序員不能直接地設置棧或堆。

Java的堆是壹個運行時數據區,類的對象從中分配空間。這些對象通過new、newarray、anewarray和multianewarray等指令建立,它們不需要程序代碼來顯式的釋放。堆是由垃圾回收來負責的,堆的優勢是可以動態地分配內存大小,生存期也不必事先告訴編譯器,因為它是在運行時動態分配內存的,Java的垃圾收集器會自動收走這些不再使用的數據。但缺點是,由於要在運行時動態分配內存,存取速度較慢。

棧的優勢是,存取速度比堆要快,僅次於寄存器,棧數據可以***享。但缺點是,存在棧中的數據大小與生存期必須是確定的,缺乏靈活性。

棧中主要存放壹些基本類型的變量(,int, short, long, byte, float, double, boolean, char)和對象句柄。 棧有壹個很重要的特殊性,就是存在棧中的數據可以***享。