可能是一个愚蠢的问题,但它已经让我发疯了好几天。首先,我说的是嵌入在更大应用程序中的代码,因此类和方法签名被强加。
所以我的目标是创建一个 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()) );
嗯……我迷路了。感谢您的任何提示。
洛朗