【发布时间】:2016-01-07 12:09:06
【问题描述】:
我有一个带有 20GB RAM、Ubuntu 操作系统的 VPS。我正在尝试使用 JAVA_TOOL_OPTIONS 将 10GB RAM 作为最大堆分配给 java,但我做不到。请参阅随附的屏幕截图。它显示可用内存为 17GB。当我尝试设置为 7GB 时它工作。但堆错误仅在 > 7GB 时发生。我已经安装了 glassfish 并为其集群分配了 3Gb。它工作正常。但是为什么我有 17GB 的可用 RAM 时却无法分配超过 7GB 的内存。
极限
过度提交内存
我的硬件是虚拟主机。下面是配置
- 架构:x86_64
- CPU 操作模式:32 位、64 位
- 字节顺序:小尾数
- CPU:16
- 供应商 ID:正版英特尔
- CPU 系列:6
- 型号:26
- 步进:5
- CPU 频率:2266.802
- BogoMIPS:4533.60
- 虚拟化:VT-x
【问题讨论】:
-
你能运行top看看还有什么在运行吗?如果还有什么..
-
向我们展示运行
java -version的输出;即您使用的是什么 Java 版本/构建? -
如果您使用的是 64 位版本的 java,那么您能检查一下您的 VPS 使用哪种硬件(主板)吗?
-
检查ulimits,检查
sysctl vm_overcommit,试试-XX:-UseLargePages -
我假设您使用的是 64 位版本的 java,因为 32 位版本会因为这个堆大小而失败。
标签: java memory jvm heap-memory