我目前有一個巨大的方法返回一個給定的整數字符串。它使用switch
聲明與686個案例,每個case
返回string constant
。有683個獨特的長度範圍從10到50個字符的字符串,全部用於該方法。我想知道這些字符串何時加載。他們是否在課堂上課時被加載?如果是這樣,是否有一種方法可以只在我第一次需要它們時加載這些字符串,並在沒有更多引用時得到垃圾回收?java - 在類加載時立即加載方法中的字符串嗎?
現在,我正在從包含一個字符串表的文件中加載這些字符串。他們將被放置在WeakHashMap中。有沒有更好的方法來做到這一點?
我想到的另一種方法是將每個字符串放在一個靜態字段中。這樣,它只會在我第一次獲取該字段的值時被加載。但那會讓我的包裹變大。
此外,dalvik-vm是否使用相同的字符串常量加載例程。
2字節/字符* 50字符/字符串* 700字符串= 70 kB數據。我不會爲此擔心。 –
你應該真的在使用關聯數組,而不是switch語句。我很討厭看到那個switch語句。然後你可以把關聯數組放在你想要的任何級別,並從你想要的地方提取你所需要的。 – Leifingson
這有你的答案:http://stackoverflow.com/questions/4918399/what-type-of-memory-heap-or-stack-string-constant-pool-in-java-gets-stored –