我有,我需要存儲鍵,值1(浮)和值2(很長的字符串)的地圖,其中數值1適用於所有鍵和值2的一個問題是隻有1%的鑰匙。java的空實例變量的內存佔用
我能想到的2個可能的解決方案
兩個映射像MAP1 =地圖(KEY1,地圖(KEY2,值1))和MAP2 =地圖(KEY1,地圖(KEY2,值2)) 利弊 - 沒有不必要的參考變量。缺點 - 存儲相同的密鑰兩次浪費內存。
使用一個地圖與自定義對象值。 map1 =地圖customobj {float value1;字符串值2} 優點 - 密鑰不重複。 consob 99%的customobj將有value2 = null,因此會消耗參考指針的內存。
基本上我最終的問題是確實(在customobj)未使用的引用消耗內存或將編譯器優化呢?我傾向於soln 2,因爲我不想通過存儲相同的key1和key2兩次來浪費內存。另一方面99%的時間值2 = null,這讓我想知道soln1是否更好。
我使用Java和我想聽到一些建議。
編輯:我沒有意識到SO didnt打印地圖結構我張貼,我編輯那個。既KEY1和KEY2是串(主要是固定長度的ID字符串)
不成熟的優化?參考很小。 –
我喜歡解決方案2.參考價格便宜。除非你有成千上萬的人,否則他們不會像第二種解決方案那麼簡單。 –
鍵是固定大小的字符串。看到我上面的編輯 – srini