我有一個在性能沉重的程序中大量使用(> 400,000個實例)的類。在課堂上離開這些方法會嚴重影響每個對象的內存使用情況,還是不重要?我應該離開方法我不使用類?
3
A
回答
3
該類在首次使用時加載到內存中,並且在正常情況下只加載一次。實際上,Class
的equals
方法編寫爲==
,這意味着Java期望它是完全相同的對象。
這與實例不同,它們在實例化時分配內存並在垃圾收集時取消分配。
如果您的班級未使用字段,則更值得關注。每個字段將消耗少量內存,但是乘以活動實例的數量可能相當於大量內存。即使該字段初始化爲null
,情況也是如此。如果該字段被初始化爲一個新的對象,那麼這可以消耗更多的內存,這取決於對象的大小。
4
加載該類所消耗的內存將與代碼的大小相對應,但是該代碼不會爲該類的每個實例重複使用。
實例只需要與實例屬性一樣多的內存+管理對象實例本身的一些開銷。
如上所述,存在維護成本,什麼不是。刪除死代碼通常會更好,但更改也會帶來成本。考慮這些方面。
相關問題
- 1. 離開UIView時我應該殺死對等方法嗎?
- 2. 我應該還是不應該使用getter和setter方法?
- 3. 我應該公開異步方法嗎?
- 4. 我應該使用replace()方法嗎?
- 5. 我應該使用哪種方法?
- 6. 我應該使用這種方法嗎?
- 7. 無法離開我的應用程序
- 8. 我是否應該更改使用PInvoke/ComImport公開的方法或類名
- 9. 我應該在塊中使用「self」來訪問類方法嗎?
- 10. 我應該使用:懸停CSS僞類還是hover()jQuery方法?
- 11. 在類中處理錯誤,我應該使用什麼方法?
- 12. 爲什麼我應該使用Assert類方法?
- 13. 我應該使用哪種類型的jdk來開發我的應用程序?
- 14. 我應該使用什麼方法來製作我的Java GUI?
- 15. 我應該使用類或實例方法增加我的對象嗎?
- 16. 我應該使用Unit還是捨棄我的Scala方法的返回類型?
- 17. 爲什麼我不應該使用靜態導入Mockito方法?
- 18. 我應該如何開始使用neo4j?
- 19. 我應該避免使用「開關」?
- 20. 我應該如何開始使用Iphone?
- 21. 我應該如何聲明我的方法需要任何類?
- 22. 我應該同步我的「假時間」類方法嗎?
- 23. 我應該如何調用'startActionMode'方法?
- 24. 我應該用_開始內部方法嗎?
- 25. 在Golang中,我應該使用哪種類型的方法專用類型?
- 26. 我應該密封所有我認爲不應該用作基類的類嗎?
- 27. 我應該繼承或使用類別
- 28. PHP - 我應該使用類嗎?
- 29. 我應該如何使用Perl URI類?
- 30. 我應該使用哪個PHP Session類?
**這些**消息是什麼? –
未使用的方法不會以任何有意義的方式影響您的運行時性能。當然,刪除它們可能會提供其他好處(最便宜的代碼是不存在的代碼)。 –
在合理範圍內,額外未使用的方法不起作用。 –