我對Java類加載的理解是它的懶加載。因此,如果你有一堆Java應用程序附帶的未使用的jar文件,它們只會浪費磁盤空間而不會真正消耗內存。然而,它似乎暗示在各種Oracle博客/文檔中,壓縮配置文件實際上會減少內存佔用(here和here)。Java Compact配置文件實際上會減少內存佔用量嗎?
爲了使一個簡單的yes或no的問題,是不是主觀的:
如果我做一個「世界,你好!」 Java應用程序(即僅使用System.out)在通過compact1配置文件運行時實際上是否具有較小的運行時內存佔用量,而不是完整的SE?(我會自己測試,但編譯緊湊配置文件時遇到問題)。
是的。使用簡潔的配置文件,整個JRE不會被加載到內存中。只有所需的運行時間庫被加載到內存中。當應用程序類被延遲加載時,當JRE啓動時,JRE類將被加載到內存中。 – 2015-02-11 18:05:19
聖潔的廢話!因此,基本上'rt.jar'中的所有內容都會被加載,無論它是否被使用?所以它只是將所有這些類加載到內存中,包括corba和rmi廢話?這只是特定於'rt.jar'嗎?他們爲什麼要這樣做?預加載性能更好嗎?你有一個鏈接,說rt.jar完全加載到init? – 2015-02-11 18:09:51
你必須問Oracle(或Sun)爲什麼。作爲一個例子,我懷疑這個決定是增加啓動時間,而不是讓應用程序停止並等待加載corba類。個人電腦的內存在1995年便宜而豐富。智能手機已經有十年的時間了。 – 2015-02-11 18:13:51