据此,我在 apache 的 java 进程中使用 14GB+。我只运行一个 Minecraft 控制面板,当我通过 Minecraft 运行内存检查时,它告诉我我使用了 7.6GB 的 8GB。当我应该查看最大 1-2GB 的已用空间时。
我是 linux 新手,这让我有点困惑。我认为这是不准确的,但如果有人可以解释这里发生了什么,那将不胜感激?
结帐 linuxatemyram.com
此外,如果它是虚拟机 Java 使用可能不准确。
您可以通过使用这些参数启动来将内存限制为特定大小
-Xms1024m -Xmx1024m
例如限制为 1gb
它是运行 java 进程的用户 apache,是的,它正在使用 14gigs。
我认为您需要动手并运行一些命令。
但在我到达那里之前,我应该解释一下 JVM 是如何工作的——当作为启动配置项的一部分启动 java 进程时,会给出称为 Xmx 和 Xms 的配置项,这可能取决于应用程序是什么以及它在做什么。为什么哦为什么那么高呢?
好吧,Java虚拟机有一个叫做内存堆的东西——它设置得越大,在完成完整的垃圾收集之前就越长——等等让我们说高端银行机器,它被设置为非常高,这样它就可以整天没有需要重新启动(重新启动是完整的垃圾收集) - 垃圾收集的时间越长,垃圾收集所需的时间就越长,所以本质上是一个小的应用程序中断,除非在这些期间其他人接管.....
所以做一个
ps -elf |grep java
or
ps auwx|grep java
查看其配置并注意 Xmx 和 Xms 值
与曾经配置过它的人交谈,以找出为什么如此之高
然后做一个
free -m
查看您有多少实际可用内存以及是否正在使用交换,因为如果您最终处于交换状态,那么由于它使用磁盘作为内存,盒子会变慢。
希望到此结束时您对 Linux 更加熟悉
E2a
如果它设置为 40gigs 并且可用,请确保它实际上会用完 40gigs,因为顾名思义,它是一个虚拟机,然后它会处理自己的资源来处理已设置的资源......所以它会慢慢地在尝试完整的 GC 之前慢慢吃掉 40gigs 或足够接近...您真正需要的是jconsole和与该 java pid 的连接,或者..如果可以通过远程 jmx 调用访问..
jconsole 应该是默认 java 安装的一部分
如果您查看 E2A 的原因是因为存在性能问题,那么您可能使用了错误的命令
sudo apt-get install nmon iftop
or
sudo yum install nmon iftop
运行nmon press cmd以及您可能希望运行的其他命令
iftop 如果您想查看网络吞吐量