我正在處理單個數據結構的一些相對較大的實例數組。每個實例由大約六個字段組成。陣列佔用了大量的空間,我發現即使使用7千兆字節的堆空間運行虛擬機時,我的開發環境也會死亡。儘管我可以搬到更大的機器,但我也在探索如何在不犧牲性能的情況下節省空間。在檢查數據時,我注意到數據中有很多冗餘。對於大約80%的數據,六個字段中的四個具有相同的值。使用靜態變量節省數組中的空間
這給了我這樣一個想法,即我可以分離這些具有冗餘信息的實例,並將它們放入數據結構的特殊形式(原始數據結構的擴展)中,其中包含四個字段的靜態字段相同的信息。我的假設是靜態字段只會在內存中實例化一次,即使這些信息被100K對象共享,這些字段也會佔用與只有一個數據結構實例化時相同的內存。因此,我應該能夠實現顯着的內存節省。
這是一個正確的假設嗎?
謝謝
埃利奧特
如果不知道數據結構以及如何填充數據,很難說明問題。似乎並沒有將數據聲明爲靜態或非真實的。重要的是共享重複的數據。 –
如果您不需要對陣列進行即時訪問,則可以使用LinkedList來提高性能。另一種解決方案將使用類似對象實例的池而不是靜態字段,請記住'static'屬於類,而不屬於實例。 –
另一個可能的問題是,如果您將來需要一個具有不同價值的字段,那麼您無法將其設爲靜態 – smk