作为jsvc运行的Java应用程序比Heap+;永久性
我有以下服务器:作为jsvc运行的Java应用程序比Heap+;永久性,java,memory,heap,openjdk,jsvc,Java,Memory,Heap,Openjdk,Jsvc,我有以下服务器: Ubuntu服务器12.04 LTS 64位 没有GUI,只有命令行 4GB内存 2芯 除了Nagios NRPE和Webmin之外,没有其他东西在运行 vm.swappiness=0 这里没有什么特别之处,运行Java应用程序: 使用jsvc作为守护进程全天候运行 -Xmx2500M -XX:+UseConMarkSweepGC 未进行其他设置 使用OpenJDK7 JMX服务器已启用,并由nagios每分钟检查一次 但是,这不应该耗尽所有内存,并导致java应用程序
- Ubuntu服务器12.04 LTS 64位
- 没有GUI,只有命令行
- 4GB内存
- 2芯
- 除了Nagios NRPE和Webmin之外,没有其他东西在运行
- vm.swappiness=0
- 使用jsvc作为守护进程全天候运行
-Xmx2500M
-XX:+UseConMarkSweepGC
- 未进行其他设置
- 使用OpenJDK7
- JMX服务器已启用,并由nagios每分钟检查一次
为什么这会耗尽我所有的内存并创建交换?尝试
-Xmx2500M
而不是-Xmx=2500M
您不需要=,-X选项与使用=的-Dkey=value系统属性不同
您的-Xmx2500M是java应用程序中可用的最大堆大小。运行JVM和管理该堆中的对象的开销通常会增加50%,但可能是堆大小的两倍。Linuxtop命令将在虚拟内存使用情况中显示这一点 有关非堆内存使用的详细讨论,请参见链接的演示文稿。 关于这个话题还有另一个SO线索 在ubuntu上使用OpenJDK可以做的一个快速检查是运行jps查看它是哪个进程ID,然后jconsole,选择内存选项卡,然后选择非堆内存使用情况
如果您试图在没有交换的情况下运行,我猜您需要对不同的堆大小进行实验,以了解应用程序可以运行的场景 对不起,那是个打字错误。事实上,我没有
=