簡體   English   中英

Java中二維數組的最大大小

[英]Maximum size of 2D array in Java

我必須創建 1000 個堆,每個堆可以包含 10^6 個節點。 為了方便訪問節點,刪除節點和更新節點的鍵,我計划創建一個大小為 10^6 * 1000 的二維數組,我將在其中存儲節點的引用。 但是,是否可以在 Java 中創建這么大的數組? 有沒有更好的方法可以在不創建數組的情況下從堆訪問特定節點? 我可以遍歷堆的每個節點來搜索我的節點,但是這個過程將是 n 為 1 個堆的順序,如果我必須從所有堆中刪除一個特定的節點,這個過程將需要數量級為 1000*n。

Java 數組由int索引,因此最大索引為2^31 - 1 ,即 2147483647(約 2E9),因此您應該可以使用 1E9 大小的數組。 但是,您需要有足夠的 RAM,不要忘記 10 億long s 將占用 8GB 的​​ RAM。

Do Java arrays have a max size? 中有更詳細的討論

如果您需要比 int 最大值更多的內存,您可以使用 sun.misc.Unsafe。 請參閱此處: https : //dzone.com/articles/understanding-sunmiscunsafe

暫無
暫無

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

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