当我启动一个空的JBoss 5.1时,它使用了这么多的内存:
在Windows~530Mb上
在AIX~220Mb
在Windows~320Mb上
在AIX~100-130Mb
为什么AIX和Windows上的内存使用有如此大的差异?
JBoss的版本是一样的。
Java 1.5。
答案 0 :(得分:3)
也许只是因为run.bat
和run.sh
是由不同的人写的。无论如何,这些设置只是初始设置,没有人可以预测用户将要做什么以及他们需要什么设置。只要忘记差异,根据您的需要进行调整。
编辑:根据评论,JVM设置在Windows和AIX下是相同的。但是ms
和mx
参数不具有相同的值,因此如果需要,堆大小将随时间增长,并且很难预测如何以及何时(这取决于使用情况)。我会为ms
和mx
使用相同的值来避免这种情况。
也就是说,操作系统监控工具(Windows perfmon或任务管理器或Unix上的ps / top)报告JVM进程的内存大小(即Windows上的java.exe
和Unix上的java
) 。
进程内存[...]包括对象堆加上额外的内存空间,因为进程可执行文件,线程运行时堆栈空间,线程对象堆空间,JNI占用的任何空间以及从中创建的对象JNI,以及任何其他JVM空间,如PERM空间,这是大多数JVM中加载类的地方。 [...]使用操作系统监视器观察进程大小,并确保它适合RAM。
但实际上,由于每个操作系统管理内存的方式,我不确定ps
并且任务管理器会报告相同的事情。
一些参考文献:
EDIT2:检查您的JVM进程是否适合RAM,这是一回事。但是检查你的JVM是否经过良好调整(例如,非常长的主要GC)确实是另一回事。您不会使用ps
或任务管理器测量第二件事,您需要为此配置您的堆。
答案 1 :(得分:2)
最明显的可能性是不同的启动脚本分配不同的内存量。检查脚本中的-Xms
选项。
此外,不同的JVM具有不同的默认内存配置,AIX的默认值可能比Windows窗口的默认值低得多。