簡體   English   中英

Android上的Java中的對象內存管理

[英]Objects memory management in Java on Android

如果我有 :

  • 包含List<B>的對象A
  • 我的List<B>包含List<C>所有對象B
  • 我的List<C>中的所有對象C都包含List<D>等...

內存如何管理? 實例化所有“鏈接的”對象(B,C,D ...),並在實例化時將其存儲在內存中?

每次調用new()時,都會從堆中獲取相應對象所需的內存。

正如您最常創建一個空列表開始一樣-僅請求該事物所需的內存。

換句話說:無法一口氣創建“完整”結構。 如果這樣做,則沒有區別:

List<List<String>> strings = new ArrayList<>();

要么

List<Number> numbers = new ArrayList<>();

這兩個指令在堆上分配的內存量是相同的! 因為在兩種情況下都創建了一個新對象(該ArrayList實例)。

語句List<String> strings = new ArrayList<>(); 只為列表本身分配堆空間,列表僅存儲對其包含的對象的引用 ,不包含對象本身。

請注意,ArrayList使用數組作為其內部結構(您可能已經猜到了),因此構造函數基本上是在分配初始大小的數組。 為了創建巨大的ArrayList,您應該預先分配空間以提高效率,例如List<String> strings = new ArrayList<>(2000); 為2000個String引用預分配空間。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM