靜態方法,我們正在運行到的內存泄漏問題,我們懷疑,下面的代碼可能是原因,我們在一個單獨的類的靜態方法,並懷疑其導致內存泄漏而其直接引用。聲明在辛格爾頓的Spring bean
// This class is wired in spring xml and loaded as spring bean
public class SpringSingletonRestClient{
// instance method to make a web-service call
public ServiceResponse getResponseFromARestService(String RequestParam){.....}
// public static helper bean mapping method, that is used outside this class
// for converting the service response object to different object
public static DomainResponse convertServiceResponseToDomainResponse(ServiceResponse serviceResponse){ //conversion logic.... }
}
}
使用
Class MainClass {
//injected as spring bean
SpringSingletonRestClient client;
public void someMethod(){
ServiceResponse serviceResponse = client.getResponseFromARestService(...);
DomainResponse domainResponse = SpringSingletonRestClient.convertServiceResponseToDomainResponse(serviceResponse);
// use domainResponse object
.......
.......
}
}
請讓我知道,因爲我剛剛加入的僞需要進一步澄清。 我們正在運行到高的內存使用情況,我們懷疑,使用它在被彈簧發起集體聲明的靜態方法是不正確的垃圾收集,有內存泄漏,因爲它發生。
問題 - 它是壞的有一個春天發起的單例類的靜態方法,即使是靜態的方法是通過直接引用,而不是使用它的實例變量。
我不明白爲什麼使用靜態方法會導致泄漏,但我應該承認,當班級是單身人士時,假設它永遠不應該被收集(如果您期望的話) – 2013-02-15 19:58:37
是的,我懷疑但不太確定,直到我到達根部。 – 2013-02-15 22:20:08