URLClassLoaderを使用して、実行時にサーバーのURLからjarをロードしています(例:http://jarsToBeLoaded/jars/
)。例えば、commons-collection.jar
,commons-httpclient.jar
およびcommons-io.jar
をロードする。私の質問は、これらのjarファイルは、それぞれのjarファイルに対してaddURL()
を呼び出すとすぐにダウンロードされます。あるいは、それらのjarファイル(lazy)の中で使用されているクラスをインスタンス化するとすぐにダウンロードできますか?URLClassLoaderは遅延読み込みを使用しますか?
2
A
答えて
0
私が知ることから、動作は指定されていないので、URLがどのように扱われるかはJVMに依存します。私はOpen JDK 8u40のコードを見てきました。この実装では、addUrl()
が呼び出されたときにJarsのダウンロードはありません。呼び出しは、あなたが実装here見ることができるためsun.misc.URLClassPath
に委任されて:あなたはあなたのカスタムクラスローダを使用して、これらのjarファイルにあなたのクラスをロードしようとすると、あなたのJarファイルからクラスをロードすると全ての魔法が起こるのだろう
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();
}
}
}
を、最初はjava.net.URLClassLoader.findClass
と呼ばれます。 Jarsが実際にダウンロードされ、どこかにキャッシュされているのか、JVMが常にネットワークストリームで動作するのかわかりません - URLClassPath
コードは従うのが簡単ではありません...
関連する問題
- 1. Autofac遅延読み込み
- 2. gwt遅延読み込み
- 3. 遅延読み込みライブラリ?
- 4. 遅延読み込みリストを使用する並列Foreach
- 5. レイアウトの読み込み遅延
- 6. Entity Framework遅延読み込み
- 7. C#の遅延読み込み?
- 8. 遅延読み込みエラー画像
- 9. 遅延読み込みandroid ExpandableListView
- 10. 遅延読み込みInfragistics Ultragrid
- 11. RecyclerView遅延読み込みTextViewコンテンツ
- 12. boolで遅延読み込み
- 13. AutomapperとNHibernateの遅延読み込み
- 14. Sonata Adminの遅延読み込み
- 15. 非同期遅延読み込みタスク
- 16. ソーシャルボタンの遅延読み込み
- 17. Javascriptのテキストファイルの読み込み遅延
- 18. エンティティフレームワーク.NETでの遅延読み込み
- 19. ロードプロパティの遅延読み込み
- 20. のUITableView - 遅延読み込みコンタクトイメージ
- 21. Hibernate-フィールド遅延読み込み
- 22. Vue.js 2.0遅延読み込み
- 23. UScroll遅延読み込みアンロードビュー
- 24. アセンブリ/カタログの遅延読み込み
- 25. 遅延Javascriptの読み込み
- 26. 遅延実行と遅延読み込み
- 27. angle2-meteorアプリケーションでの遅延読み込みの使用方法
- 28. DIでは遅延読み込みができませんか?
- 29. 遅延読み込みモジュールがシングルトンを使用していません
- 30. 非遅延としてマップされたアソシエーションを遅延読み込み