蛮力的Java搜索阵列并没有花费内存?

时间:2011-07-16 16:46:48

标签: java memory

我正在对没有重复元素的数组构造中的方法进行比较,然后花费时间和使用的内存。

对于散列方法和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++;
}

1 个答案:

答案 0 :(得分:2)

当测试少量内存时,请尝试关闭TLAB并且没有任何对象太小。 ;)-XX:-UseTLAB TLAB一次为每个线程分配内存块。这些块不计入空闲内存。

您可能会发现Getting the size of an Object上的这篇文章很有用。