我有一個問題。您導入到主項目的外部JAR文件是否以DLL的風格運行,這樣主項目將只在使用它們時纔將它們帶到操作內存,還是它們在內存中用於項目的整個運行時間?我在問,因爲我將在一個項目中工作,我希望它能夠在Java中快速運行,所以我正在尋找我的項目體系結構的最優化。Jar vs DLL - 它們運行類似嗎?
3
A
回答
2
JAR包含第一次使用它們時加載到內存中的類(等等)。一旦他們加載,他們留在內存中(除非你專門寫一些代碼來卸載它們)。
所以,雖然該加載過程可能會在應用程序啓動時引入一些(小)延遲,但一旦加載了所有內容,由於加載類的方式不會看到任何性能問題。
如果你遵循良好的編程習慣,Java可以讓你創建一個高性能的應用程序。
+0
只是爲了得到澄清 - 在啓動時加載JAR文件並在第一次使用它們時加載類會產生不同的成本。那是對的嗎?在應用程序啓動時,JAR文件被加載,但不是類。 – RBT
0
在維基百科上的Java類加載器的文章:
的Java類加載器是動態加載類到JVM的JRE的一部分。通常類只是按需加載。由於類加載器,Java運行時系統不需要了解文件和文件系統。授權是瞭解何時瞭解類加載器的重要概念。
當JVM啓動三個類加載器開始:
引導類加載器 - 加載核心Java類擴展
類加載器 - 在擴展目錄指定的代碼
系統類加載器 - 類路徑中的代碼
所有不被這些類加載器(外部jar文件)加載的軟件庫都是按需加載的。
相關問題
- 1. JAR中的多個可運行類,如何運行它們?
- 2. Linux上的.dll類似於 - 如何獲取它們?
- 3. 我們是否在java平臺上類似於dll地獄的jar地獄?
- 4. IsDBNull vs DBNull.Value,它們是一樣的嗎?
- 5. XMLDocument vs DataSet?它們是一樣的嗎?
- 6. CoverageInfo.getCoverageStatus()vs CoverageInfo.isCoverageSufficient(),它們是一樣的嗎?
- 7. 似乎無法運行jar文件
- 8. 從其他.dll加載服務並將它們隔離運行
- 9. 包含Java類並在運行時運行它們
- 10. 上傳.jar文件並運行它。 OPENSHIFT
- 11. OpenShift上傳jar並運行它
- 12. 在運行時加載jar和使用它的類
- 13. Dart可以運行jar歸檔嗎?
- 14. Scard32.dll和類似的
- 15. Azure - SDK 2.0到2.3 - 它們將並排運行嗎?
- 16. 可以運行2個document.ready使它們發生衝突嗎?
- 17. AS3類 - 我應該使用它們嗎?
- 18. 它在Eclipse中運行正常,但無法運行.jar文件
- 19. .jar以-jar標誌運行
- 20. 運行Scala Jar
- 21. 運行可執行Java jar - 高版本vs低版本?
- 22. 我可以通過cmd運行.jar文件,但我不能雙擊它們
- 23. 普通的dll vs擴展dll
- 24. 使用RXTX jar和DLL創建runnable jar
- 25. Tomcat 6 vs 7 - lib vs shared/lib - jar只?
- 26. 刪除與類似關鍵字行,如果它們出現在連續的行
- 27. IKVM實際需要用C#運行一個jar嗎?
- 28. MEF和ShadowCopying DLL,以便我可以在運行時覆蓋它們
- 29. JAR vs WAR文件規範
- 30. 我們可以運行保存在jar文件中的ant文件嗎?
你很擔心細節太早。只需遵循現在的代碼組織的最佳實踐,並在以後擔心速度問題。提示:它與你的代碼組織無關。 –
可能重複http://stackoverflow.com/q/4411028/1697099 – Premraj
[.jar和.dll文件之間的差異]的可能重複(http://stackoverflow.com/questions/4411028/difference-between-jar-and -dll-file) – RBT