JVM内存设置的影响

时间:2014-10-02 19:43:52

标签: java performance memory memory-management jvm

我正在尝试找到我们拥有的Web应用程序的最佳内存设置。此应用程序需要检索大型数据集并导致高内存使用率。

我写了一个小程序来测试JVM内存设置,这段代码基本上是用虚拟对象来淹没内存。

import java.io.FileNotFoundException;
import java.io.FileWriter;
import java.io.IOException;
import java.util.ArrayList;

class Dummy{
    public final long v1 = 132132343243245L;
    public final long v2 = 132132343243245L;
    public final long v3 = 132132343243245L;
    public final long v4 = 132132343243245L;
}

public class MemoryTest {

    public static void main(String[] args){
        FileWriter fw = null;
        long start = System.currentTimeMillis();
        try{
            fw  = new FileWriter("out.txt");
            ArrayList<Dummy> alDummies = new ArrayList<Dummy>();
            for(int i =0 ; i < 1000; i++){
                long begin = System.currentTimeMillis();
                for(int j=0; j< 10000; j++){
                    alDummies.add(new Dummy());
                }
                long end = System.currentTimeMillis();
                fw.write(Long.toString(end-begin) + "\n");
            }
        } catch(FileNotFoundException e){
            e.printStackTrace();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } finally {
            if(fw != null)
                try {
                    long finish = System.currentTimeMillis();
                    fw.write("Total: " + Long.toString(finish-start));
                    fw.close();
                } catch (IOException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
        }
    }

}

当我使用各种内存设置运行代码时发生这种情况。

-Xms512M  -Xmx512M:  Errors out with insufficient memory.
-Xms768M  -Xmx768M:  Took total time of ~3300ms
-Xms1G  -Xmx1G:  Took total time of ~450ms
-Xms2G  -Xmx2G:  Took total time of ~500ms

所有这些都是平均10次运行。

我可以理解从768M到1G的性能提升,我猜JVM必须减少内存页面的移动。

但是我不明白从1G到2G的性能下降,为什么内存量越大表现越慢?

我不知道是否重要我正在使用带有16G内存和2.7 GHz Intel Core i7的mac pro

0 个答案:

没有答案