微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

我的应用程序有128MB的堆,但使用1.6GB的真正的RAM 我如何知道1.4GB的位置?

在linux平台上,我的jboss上的java应用程序有128MB的堆,但使用1.6GB的真实RAM。 我如何知道1.4GB的位置?

PID USER PR NI VIRT RES SHR S %cpu %MEM CODE DATA TIME+ COMMAND 1379 root 16 0 9.7g 1.6g 1980 S 0.7 1.3 36 9.7g 0:11.03 java

谢谢,

埃姆雷

OpenCL – 如果GPU内存大于系统RAM,会发生什么情况

mremap和malloc一起工作吗?

打开一个Windows文件目录在c中读/写

在Linux内核中做COW拷贝?

内核模块的内存使用情况

我不确定你怎么知道 但是我的理论是,你的应用程序已经将一个巨大的文件映射为一个MemoryMappedBuffer 。 你问题中的统计数据表明你正在使用9.7千兆字节的地址空间。

我的第一步是检查内存分析器中的进程,如VisualVM或yourkit 。 这可以初步了解您的进程的内存使用情况。

解决这类问题的另一个工具是jmap 。

你的意思是“我的应用程序有128MB的堆”,你是用-Xmx 128M启动JBoss吗?

无论如何,堆的大小并不决定你的进程使用的内存量,JVM将为其他事物分配内存,包括每个线程的堆栈。

但在你的情况下,这可能不是解释,因为1.4GB似乎是巨大的。 你在做什么特别的应用程序?

Emre他,根据你的设置你只设置烫发的开始/最大尺寸。 尝试将这些参数添加到您的JVM:-xms128m -Xmx128m

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐