国产成人毛片视频|星空传媒久草视频|欧美激情草久视频|久久久久女女|久操超碰在线播放|亚洲强奸一区二区|五月天丁香社区在线|色婷婷成人丁香网|午夜欧美6666|纯肉无码91视频

java中棧和堆的區(qū)別 jvm堆和棧的區(qū)別?

jvm堆和棧的區(qū)別?1. 堆棧:每當啟動一個新線程時,Java虛擬機都會為它分配一個Java堆棧。JVM將只在Java堆棧上執(zhí)行兩個操作:堆棧按下或以堆棧幀為單位退出堆棧。每個線程都包含一個堆棧區(qū)域,

jvm堆和棧的區(qū)別?

1. 堆棧:每當啟動一個新線程時,Java虛擬機都會為它分配一個Java堆棧。JVM將只在Java堆棧上執(zhí)行兩個操作:堆棧按下或以堆棧幀為單位退出堆棧。每個線程都包含一個堆棧區(qū)域,其中只存儲基本數據類型的對象和自定義對象(而不是對象)的引用,對象存儲在堆棧區(qū)域中。

2. 堆:存儲所有對象,每個對象都包含相應的類信息——類的目的是獲取操作指令。JVM中的所有線程只共享一個堆。堆不存儲基本類型和對象引用,只存儲對象本身。

堆棧區(qū)別?

堆棧:它是一種“先進,后出”的數據結構。它通常用于在方法(函數)中保存參數和局部變量。在Java中,所有基本類型和引用類型都存儲在堆棧中。堆棧中數據的生存空間通常在當前范圍內(即{…}包圍的區(qū)域)

Heap:它是可以動態(tài)應用的內存空間(可用內存空間的鏈表由操作系統(tǒng)維護)。C中malloc語句生成的內存空間在堆中。

在Java中,new用于所有應用程序,XXX()構造的對象存儲在堆中。當垃圾收集器檢測到某個對象未被引用時,它將自動銷毀該對象。因此,從理論上講,Java中對象的生存空間是沒有限制的。只要有一個引用類型指向它,它就可以在任何地方使用

舉個簡單的例子。每次調用方法時,都會在堆棧中創(chuàng)建一個堆棧幀,以保存方法中的局部變量,例如主方法中的測試變量。但是,新方法將在堆中創(chuàng)建對象,然后將堆地址保存在測試變量中。在test1方法中,B變量直接存儲在堆棧幀中,因為它是基本類型。調用test1方法時,堆棧幀會自動彈出,堆棧中的變量也會被回收,B和test變量也會被回收,但堆中的對象需要在垃圾回收期間被回收。當JVM檢測到根對象沒有引用測試對象時,它將執(zhí)行垃圾收集。