首页 > 解决方案 > 为什么jvm堆内存没有完全使用?

问题描述

我的应用程序启动了许多线程来接收和发送数据,出现内存不足错误,我决定增加堆以便应用程序在出现内存不足问题之前完成进程。

   java -Xmx5120M -jar peer100.jar config

}catch ( OutOfMemoryError  e) {
        System.out.println("out of memory");
        MemoryUsage heapUsage = memoryBean.getHeapMemoryUsage();
        long MEGABYTE = 1024*1024;
        long maxMemory = heapUsage.getMax() / MEGABYTE;
        long usedMemory = heapUsage.getUsed() / MEGABYTE;   
        System.out.println(" : Memory Use :" + usedMemory + "M/" + maxMemory + "M");

        System.exit(0);

    }

当我检查内存的使用情况时,我发现堆没有按预期使用

: Memory Use :16M/4551M

有什么解决方案可以处理堆的整体大小吗?

标签: javalinuxjvmout-of-memoryheap-memory

解决方案


推荐阅读