2014-01-20 89 views
3

我有一個問題。您導入到主項目的外部JAR文件是否以DLL的風格運行,這樣主項目將只在使用它們時纔將它們帶到操作內存,還是它們在內存中用於項目的整個運行時間?我在問,因爲我將在一個項目中工作,我希望它能夠在Java中快速運行,所以我正在尋找我的項目體系結構的最優化。Jar vs DLL - 它們運行類似嗎?

+1

你很擔心細節太早。只需遵循現在的代碼組織的最佳實踐,並在以後擔心速度問題。提示:它與你的代碼組織無關。 –

+1

可能重複http://stackoverflow.com/q/4411028/1697099 – Premraj

+0

[.jar和.dll文件之間的差異]的可能重複(http://stackoverflow.com/questions/4411028/difference-between-jar-and -dll-file) – RBT

回答

2

JAR包含第一次使用它們時加載到內存中的類(等等)。一旦他們加載,他們留在內存中(除非你專門寫一些代碼來卸載它們)。

所以,雖然該加載過程可能會在應用程序啓動時引入一些(小)延遲,但一旦加載了所有內容,由於加載類的方式不會看到任何性能問題。

如果你遵循良好的編程習慣,Java可以讓你創建一個高性能的應用程序。

+0

只是爲了得到澄清 - 在啓動時加載JAR文件並在第一次使用它們時加載類會產生不同的成本。那是對的嗎?在應用程序啓動時,JAR文件被加載,但不是類。 – RBT

0

在維基百科上的Java類加載器的文章:

的Java類加載器是動態加載類到JVM的JRE的一部分。通常類只是按需加載。由於類加載器,Java運行時系統不需要了解文件和文件系統。授權是瞭解何時瞭解類加載器的重要概念。

當JVM啓動三個類加載器開始:

  1. 引導類加載器 - 加載核心Java類擴展

  2. 類加載器 - 在擴展目錄指定的代碼

  3. 系統類加載器 - 類路徑中的代碼

所有不被這些類加載器(外部jar文件)加載的軟件庫都是按需加載的。

相關問題