Ben bir prototip fasulye örneklerini oluşturan bir yöntemi olan bir tek fasulye var. Prototip fasülyesi örneklerini almak için documented here yöntemini kullanıyorum. 'Go' yöntemi örneği başvuramaz olurdu ve çöp toplanan olacağını, yani döndüğündeSpring - Prototip kapsamlı fasülyemi nasıl yok edebilirim?
public class SingletonService implements ApplicationContextAware {
private ApplicationContext applicationContext;
public void go() {
MyPrototypeBean prototype = applicationContext
.getBean(MyPrototypeBean.class);
prototype.doSomething();
}
@Override
public void setApplicationContext(ApplicationContext applicationContext)
throws BeansException {
this.applicationContext = applicationContext;
}
}
İlk başta bu 'prototip' benim örnek kapsam dışında gideceğini, yeterince iyi olduğunu düşündüm .
Ancak, akran the documentation aşağıdaki ifadeyi işaret:
istemci kodu prototip-kapsamlı nesneleri temizlemek ve prototip fasulye (ler) tutan pahalı kaynakları serbest olmalıdır.
Yani Bahar bir referansı koruyacak gibi görünüyor ve bu yüzden gc hiçbir zaman onu almayacak? Eğer durum buysa, Spring'e referansı serbest bırakmasını nasıl söyleyebilirim? Dokümantasyonda 'özel fasülyeli post-işlemci' kullanabileceğime inanıyorum, ancak bu işlemcinin nereye sığacağı ve hangi kodun çalışacağı net değil. Tüm yardım için şimdiden
sayesinde Roy
Teşekkürler Sanat - bu yüzden yukarıdaki kodun yeterli olduğunu ve bellek sızıntısının sebebi olmayacağını söylemek güvenli mi? –
iyi, bu MyPrototypeBean uygulamasına bağlı, ancak bir Bahar açısından iyi. – artbristol
Fasulyeyi almak için getBean (..) yöntemini kullandınız. Performansları ile çok maliyetli olduğunu anladım. o zaman nasıl geri almalısın? – rayman