请教个问题:java进程显示占用了1.4G内存,但在jconsole里怎么才是100M左右?

我用如下代码做一个简单的实验,发现java进程显示占用了1.4G内存,但在jconsole里怎么才是100M左右。

public static void main(String[] args) throws IOException {
    for (int i = 0; i < 100; i++) {
        test1();
    }

    System.gc();

    Runtime run=Runtime.getRuntime(); //取得当前jvm的运行时实例
    run.gc(); //运行Runtime的垃圾回收方法

    System.in.read();
}

/**
 * 循环到调用该方法1000次,内存涨到1.4G后不再增长,始终维持这个内存,怎么GC也不降低。
 */
private static void test1() {
    for (int i = 0; i < 1000; i++) {
        byte[] so = new byte[1000000];
        so = null;
    }
}

![图片说明](https://img-ask.csdn.net/upload/201711/17/1510887621_909596.png)

点击jconsole的GC按钮,jconsole里占用内存下降了,但是java进程还是1.4G。

![图片说明](https://img-ask.csdn.net/upload/201711/17/1510887652_162531.png)

进程显示的是虚拟内存,可能系统还没有回收,但是gc已经触发了。