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已经触发了。

    评论

报告相同问题?

悬赏问题

  • ¥15 操作系统相关算法中while();的含义
  • ¥15 CNVcaller安装后无法找到文件
  • ¥15 visual studio2022中文乱码无法解决
  • ¥15 关于华为5g模块mh5000-31接线问题
  • ¥15 keil L6007U报错
  • ¥15 webapi 发布到iis后无法访问
  • ¥15 初学者如何快速上手学习stm32?
  • ¥15 如何自动更换布娃娃图片上的衣服
  • ¥15 心理学eprime编程
  • ¥15 arduino esp8266开发