可能是一個愚蠢的問題,但它在一些日子裏一直讓我瘋狂。首先,我講的是嵌入在更大的應用程序中的代碼,所以類和方法簽名是強加的。將一個對象添加到靜態方法的靜態集合中
所以我的目標是創建的GC信息的集合,代碼如下:
public final class JVMMemStats_SVC {
public static final void JVMMemStats(IData pipeline) throws ServiceException {
List<GarbageCollectorMXBean> gcMBeans = ManagementFactory.getGarbageCollectorMXBeans();
for (GarbageCollectorMXBean gcBean : gcMBeans){ // Loop against GCs
GC gc = GCs.get(gcBean.getName());
if(gc != null){ // This GC already exists
} else { // New GC
GCs.put(
gcBean.getName(),
new GC(gcBean.getCollectionCount(), gcBean.getCollectionTime())
);
}
}
public class GC {
public long Cnt, Duration;
public GC(long cnt, long duration){
this.set(cnt, duration);
}
public void set(long cnt, long duration){
this.Cnt = cnt;
this.Duration = duration;
}
}
static Map<String, GC> GCindexes = new HashMap<String, GC>();
}
但是我在編譯時出現以下錯誤:
non-static variable this cannot be referenced from a static context :
GCPrev.add(new GC(gcBean.getCollectionCount(), gcBean.getCollectionTime()));
嗯...我迷路了。感謝您的任何提示。
Laurent
什麼是GCPrev? – Bathsheba