特定对象列表的内存使用情况

Oma*_*ada 3 java unit-testing memory-management

我有一个简单的pojos(一个User类)列表,其中包含大约15个简单字段和1个arrayList.那些代表用户并且可能100或1000个将存储在内存中以避免每次从外部系统检索它们.(我正在使用Ehcache)

我想通过junit测试知道这些用户的K列表使用了多少内存. 我有直觉认为简单的pojo就像那些即使是1000个也不会以任何方式威胁(换言之,小于100 Ko)

在此先感谢您的回复.我非常感谢你的帮助.

dog*_*ane 11

您可以在创建对象之前和之后计算JRE使用的内存,以便估计对象使用的字节数.

System.gc();
System.runFinalization();
Thread.sleep(1000);
long before = Runtime.getRuntime().totalMemory() - Runtime.getRuntime().freeMemory();

//build object here

System.gc();
System.runFinalization();
Thread.sleep(1000);
long after = Runtime.getRuntime().totalMemory() - Runtime.getRuntime().freeMemory();

long objectSize = after - before;
Run Code Online (Sandbox Code Playgroud)