我正在使用HashMap在应用程序启动时缓存一些重要数据.
此缓存有时会增长然后减少.我想知道它在RAM上占用了多少内存.
是否有可能以KB格式获取地图内存?有API吗?
mar*_*pes 10
我正在使用此方法来估计MAP大小:
public static void size(Map map) {
try{
System.out.println("Index Size: " + map.size());
ByteArrayOutputStream baos=new ByteArrayOutputStream();
ObjectOutputStream oos=new ObjectOutputStream(baos);
oos.writeObject(map);
oos.close();
System.out.println("Data Size: " + baos.size());
}catch(IOException e){
e.printStackTrace();
}
}
Run Code Online (Sandbox Code Playgroud)
有一个很好的工具用于此目的:ClassMexer
您可以通过以下方式估计HashMap的内存,包括引用的对象:
long noBytes = MemoryUtil.deepMemoryUsageOf(myCacheMap);