SORU
29 EYLÜL 2008, PAZARTESİ


Java boşaltma sınıfları?

Masaüstü bir uygulama dinamik olarak konuşmam gereken bir AppServer yükleme sınıfları başlatılabilmesi için özel bir sınıf yükleyicisi var. Bunu yapmak için gerekli olan kavanoz miktarı çok saçma eğer onlara gemiyi istersek () olduğundan, bunu yaptık. Biz de eğer dinamik olarak AppServer kütüphaneden zamanında sınıfları yük değiliz ama sürüm sorunları var.

Şimdi, ben sadece bir sorun nerede konuşmam lazım iki farklı AppServers ve bulduğu bağlı olan sınıflar yük ilk olabilirim sonu kötü... gibi zorla boşaltma sınıfı olmadan aslında ölüm JVM?

Bu mantıklı umuyoruz

CEVAP
29 EYLÜL 2008, PAZARTESİ


Bir Sınıf yüklenmemiş olabilir tek yolu ise Classloader kullanılan çöp toplanır. Bu, classloader kendisi için her sınıf için ve referansları dodo yolunda gitmek anlamına gelir.

Senin soruna olası bir çözüm, her jar dosyası için bir Classloader ve belirli bir Kavanoz için sınıfların gerçek yükleme delegeler bu AppServers her biri için bir Classloader classloaders. Bu şekilde, her App server için jar dosyasının farklı sürümleri gösterebilir.

Bu önemsiz değildir. Parçasını platformu her paket farklı bir classloader ve bağımlılıkları platformu tarafından çözülmüş olarak sadece bunu yapmak için gayret eder. Belki bu iyi bir çözümdür bakmak olurdu.

Eğer PARÇASINI kullanmak istemiyorsanız bile, olası bir uygulama her JAR dosyası için JarClassloader sınıfının bir örneği kullanmak için olabilir.

Ve Classloader genişleten yeni, MultiClassloader bir sınıf oluşturun. Bu sınıf DAHİLİ olarak diye bir dizi (veya Liste) JarClassloaders ve defineClass() yöntemi olur yineleme aracılığıyla tüm iç classloaders kadar bir tanımı olabilir, ya da bir NoClassDefFoundException atılır. Erişimci yöntemleri birkaç sınıfa yeni JarClassloaders eklemek için sağlanabilir. Bir MultiClassLoader için internette birçok olası uygulamaları vardır, hatta kendi yazmak için gerek olmayabilir.

Eğer sunucuya her bağlantı için bir MultiClassloader sen instanciate, prensip olarak her server aynı sınıf farklı bir sürümünü kullanıyor olabilir.

İçerdiği dersler tanımlı kullanıcı betikleri yüklenecek vardı ve bellekten bir proje, MultiClassloader fikri kullandım ve oldukça iyi çalıştı.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Autodesk 3ds Max Learning Channel

    Autodesk 3ds

    23 HAZİRAN 2010
  • Howard Pinsky

    Howard Pinsk

    6 AĞUSTOS 2006
  • jbignacio

    jbignacio

    13 Mart 2006