升级到Ubuntu 14之后,我对所有JVM崩溃都有异议。
我重新安装了Java (oracle和openjdk版本)。我花了一些时间来调优JVM堆参数,现在我终于可以运行Java应用程序了。
现在的问题是,每次启动SQLDeveloper时,Eclipse都会给我:“无法为卡片标记数组预留足够的空间”。
如果我正确理解,这与JVM内存块分配有关。
为了防止这种情况发生,我必须遵守规则吗?
机器信息:
Ubuntu14.04LTS;64位;CPU Intel Core2 Duo;8GB内存Eclipse: Java-7-甲骨文;-d64;-XX:MaxPermSize=256M;-Xms512m -Xmx512m;Eclipse /Debug:Java6-OpenJDK-AMD 64;-Xms1024m;-Xmx1024m;-XX:+UseSerialGC;SQLDeveloper: Java7-Oracle;-XX:MaxPermSize=256M;
发布于 2014-10-23 14:09:10
JVM正在尝试分配一个连续的内存块。因为我在系统上有足够的内存,所以它必须是零碎的。
为了解决这个问题,我将初始堆大小设置为非常低(默认128没有工作),并允许JVM处理它。
我将JVM执行参数更改为:
java-6-openjdk-amd64; -Xms1024m; -Xmx1024m; 至:
java-6-openjdk-amd64; -Xms64m; -Xmx1024m; 我还将overcommit_ratio从100 (默认)降低到50。
$ cat /proc/sys/vm/overcommit_ratio我知道建议保留100,但是由于我已经做了更改,所以当我并行运行Chromium/Eclipse/SQLDeveloper时,不会得到jvm错误。
https://askubuntu.com/questions/527629
复制相似问题