WindowsAPI 2017-11-17 03:01 采纳率: 0%
浏览 1329

请教个问题: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)
  • 写回答

1条回答 默认 最新

  • oyljerry 2017-11-17 03:13
    关注

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

    评论

报告相同问题?

悬赏问题

  • ¥50 汇编语言除法溢出问题
  • ¥65 C++实现删除N个数据列表共有的元素
  • ¥15 Visual Studio问题
  • ¥15 state显示变量是字符串形式,但是仍然红色,无法引用,并显示类型不匹配
  • ¥20 求一个html代码,有偿
  • ¥100 关于使用MATLAB中copularnd函数的问题
  • ¥20 在虚拟机的pycharm上
  • ¥15 jupyterthemes 设置完毕后没有效果
  • ¥15 matlab图像高斯低通滤波
  • ¥15 针对曲面部件的制孔路径规划,大家有什么思路吗