我正在对没有重复元素的数组构造中的方法进行比较,然后花费时间和使用的内存。
对于散列方法和treeset方法,内存打印没有问题,但对于强力搜索,它不会打印任何内存。蛮力是否有可能不使用任何“可敬的”记忆,因为它只是逐个比较一个元素?这是我的代码。这可能是错的吗?
public static void main(String[] args)
{
Random r = new Random();
int warmup = 0;
while(warmup<nr) {
tempoInicial = System.nanoTime();
memoriaInicial = Runtime.getRuntime().totalMemory() - Runtime.getRuntime().freeMemory();
while(ne<max)
{
valor = r.nextInt(maxRandom);
acrescentar();
}
tempoFinal = System.nanoTime();
memoriaFinal = Runtime.getRuntime().totalMemory() - Runtime.getRuntime().freeMemory();
retirar();
System.gc();
warmup++;
}
和
private static void acrescentar()
{
if(usaTreeSet)
{
if(ts.contains(valor))
return;
ts.add(valor);
}
if(usaHashSet)
{
if(hs.contains(valor))
return;
hs.add(valor);
}
if(usaBruteForce)
{
for(int i=0; i<ne; i++)
{
if(pilha[i]==valor)
return;
}
}
pilha[ne]=valor;
ne++;
}
答案 0 :(得分:2)
当测试少量内存时,请尝试关闭TLAB并且没有任何对象太小。 ;)-XX:-UseTLAB
TLAB一次为每个线程分配内存块。这些块不计入空闲内存。
您可能会发现Getting the size of an Object上的这篇文章很有用。