我正在使用URLClassLoader在運行時從服務器URL加載jar(例如:http://jarsToBeLoaded/jars/
)。例如,我加載了commons-collection.jar
,commons-httpclient.jar
和commons-io.jar
。我的問題是:只要我爲每個jar調用addURL()
,或者在實例化一個在這些jar(懶惰)中使用的類時,就立即下載這些jar文件?URLClassLoader是否使用延遲加載?
2
A
回答
0
從我所知道的情況來看,行爲沒有被指定,所以它將取決於你的JVM如何處理這些URL。我瀏覽了Open JDK 8u40的代碼。對於該實現,當調用addUrl()
時,不會下載Jars。呼叫委託給sun.misc.URLClassPath
的,你可以看到實施here:當您嘗試加載在那些罐子的類,使用自定義類加載器
public synchronized void addURL(URL url) {
if (closed)
return;
synchronized (urls) {
if (url == null || path.contains(url))
return;
urls.add(0, url);
path.add(url);
if (lookupCacheURLs != null) {
// The lookup cache is no longer valid, since getLookupCache()
// does not consider the newly added url.
disableAllLookupCaches();
}
}
}
所有從您的Jar文件加載類的魔法會發生,第一次和java.net.URLClassLoader.findClass
將被調用。我不確定是否實際上將Jars下載並緩存到某處,或者JVM將始終與網絡流一起工作 - URLClassPath
代碼不容易遵循...
相關問題
- 1. NSFileWrapper是否支持延遲加載?
- 2. 延遲加載延遲
- 3. 使用Ajax延遲加載
- 4. 什麼是延遲加載?
- 5. 延遲加載
- 6. 延遲加載
- 7. 延遲加載
- 8. 延遲加載
- 9. 延遲加載
- 10. 延遲加載
- 11. 延遲加載
- 12. 延遲加載
- 13. 延遲加載
- 14. 是否可以使用Coldfusions cfthread延遲加載圖像?
- 15. automapper是否阻止使用EF進行延遲加載?
- 16. 是否有可能使用angular-cli塊和延遲加載scripts.bundle?
- 17. 的jquery - 延遲加載 - 設置延遲
- 18. 延遲加載Dylibs
- 19. FBProfilePictureView加載延遲
- 20. Firebase延遲加載
- 21. 延遲加載mvc3
- 22. UIwebview延遲加載
- 23. 延遲加載DLL
- 24. 與延遲加載
- 25. 延遲加載DLL
- 26. RecyclerView延遲加載
- 27. 延遲加載jQuery
- 28. Firebase延遲加載
- 29. FBProfilePictureView延遲加載
- 30. jQuery延遲加載