我有一个创建的哈希映射,它基本上是嵌套哈希映射的集合: -
Map<String, Map<KeyPOJO,ValuesPOJO>> customMap= new HashMap<String, Map<KeyPOJO,ValuesPOJO>>();
我在其中插入了10,000条记录,并希望确定其内存使用情况,即在其满载10,000条记录后的内存大小。
请告诉我如何在不使用分析工具和第三方库的情况下通过程序获得该功能。
答案 0 :(得分:4)
想要确定其内存使用量,即其内存大小
在创建和填充地图之前和之后,请致电Runtime.getRuntime().totalMemory()
- Runtime.getRuntime().freeMemory()
。
答案 1 :(得分:0)
如果您只想知道JVM中使用了多少内存,以及多少是免费的,您可以尝试这样的事情:
// Get current size of heap in bytes
long heapSize = Runtime.getRuntime().totalMemory();
// Get maximum size of heap in bytes. The heap cannot grow beyond this size.
// Any attempt will result in an OutOfMemoryException.
long heapMaxSize = Runtime.getRuntime().maxMemory();
// Get amount of free memory within the heap in bytes. This size will increase
// after garbage collection and decrease as new objects are created.
long heapFreeSize = Runtime.getRuntime().freeMemory();
答案 2 :(得分:0)
// Total number of processors or cores available to the JVM
long processors=Runtime.getRuntime().availableProcessors();
// Total amount of free memory available to the JVM
long freeMemory=Runtime.getRuntime().freeMemory();
// This will return Long.MAX_VALUE if there is no preset limit
long maxMemory = Runtime.getRuntime().maxMemory();
// Total memory currently in use by the JVM
long totalMemory=Runtime.getRuntime().totalMemory();