增加JVM最大堆大小为内存密集型应用

我需要运行使用超过2GB的一个Java内存密集型应用程序,但我有问题,增加堆最大大小。 到目前为止,我曾尝试以下方法:

  • 设置-Xmx参数,如-Xmx3000m。 这种方法失败,在创建的JVM。 从我GOOGLE了,它看起来像-Xmx必须小于2GB。
  • 使用-XX:+ AggressiveHeap选项。 当我尝试这种方法,我得到一个“没有足够的内存”错误,告诉堆大小为1273.4 MB,即使我的电脑有8GB的内存。

有没有办法,我可以尝试增加JVM的最大堆大小的另一种方法? 这里的电脑规格的摘要:

  • 操作系统:Windows 7(64位)
  • 处理器:Intel酷睿i7(2.66千兆赫)
  • 内存:8 GB
  • Java的版本:

java version "1.6.0_18" Java(TM) SE Runtime Environment (build 1.6.0_18-b07) Java HotSpot(TM) Client VM (build 16.0-b13, mixed mode, sharing)

--------------解决方案-------------

让自己从Oracle 64位JVM。

当你在32位模式下使用的JVM,可以分配的最大堆大小为1280 MB。 所以,如果你想超越这一点,你需要在64模式下调用JVM。

您可以使用下面:

$ java -d64 -Xms512m -Xmx4g HelloWorld

哪里,

  • -d64:将使64位JVM
  • -Xms512m:将设置初始堆大小为512 MB
  • -Xmx4g:将设置最大堆大小为4 GB

这时,你可以在-Xms和-Xmx按你的要求(因人而异)

在JVM性能调整的一个非常好的资源,这可能需要考虑:http://java.sun.com/javase/technologies/hotspot/gc/gc_tuning_6.html

我相信2GB的限制是32位Java。 我以为V1.6总是64位,但尝试强制64位模式正好看到:添加-d64选项。

32位Java被限制在大约1.4至1.6 GB。

甲骨文32位堆常见问题解答

引用

理论上的最大堆限制为32位JVM是4G。 由于各种附加的约束,如可用的交换,内核地址空间使用率,内存碎片,以及虚拟机的开销,在实践中限制可以大大降低。 在大多数现代的32位Windows系统上的最大堆大小范围从1.4G到1.6G。 在32位Solaris内核上的地址空间限制为2G。 在64位操作系统上运行32位VM系统,最大堆大小可能会更高,在许多Solaris系统逼近4G。

分类:java的 时间:2015-03-15 人气:0
本文关键词: Java中,JVM,JVM参数
分享到:

相关文章

Copyright (C) 55228885.com, All Rights Reserved.

55228885 版权所有 京ICP备15002868号

processed in 1.484 (s). 10 q(s)