簡體   English   中英

從 Jar 文件加載 Java 類

[英]Java class loading from Jar file

我有一個包含多個類的巨大 jar 文件,但是我的應用程序中的對象圖只需要兩個類 A 和 B(以及 JVM 所需的其他默認類)。 如果是這種情況,Java 會將整個 Jar 文件加載到內存中嗎? 我的意思是我應該創建另一個只有 A 類和 B 類的 Jar 文件嗎? 我已經閱讀了Java中的類加載機制,我猜Java除了默認類之外只會加載所需的類,但我不確定。 謝謝你的時間。

Java 會將整個 Jar 文件加載到內存中嗎?

如果您將該.jar文件放在類路徑上 - 是的,JVM 會將整個.jar加載到為進程分配的內存中;

我的意思是我應該創建另一個只有 A 類和 B 類的 Jar 文件嗎?

似乎它(還)沒有使用Project Jigsaw 的 JPMS ,而且很可能,最好將這兩個類分開打包,是的;

我已經閱讀了Java中的類加載機制,我猜Java除了默認類之外只會加載所需的類,但我不確定。

盡管事實上.jar將被加載到內存中,如果在您的應用程序中根本不使用它們,Java 將不會加載它們。

它們在應用程序需要時加載。

在使用/需要類的那一刻,Java 運行時環境調用 Java ClassLoader ,這個(這些)類加載器動態地將類加載到內存中。

類是必需的/使用的,意思是這樣的:

  • 類被實例化(它的對象被創建);
  • 訪問/引用該類的靜態成員(方法或字段);
  • 類通過反射訪問;
  • 類已從命令行/shell 運行。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM