相关疑难解决方法(0)

无法为对象堆保留足够的空间

当我运行时,每次尝试运行程序时,我都会反复出现以下异常.

VM初始化期间发生错误

无法为对象堆保留足够的空间

无法创建Java虚拟机.

我试图增加我的虚拟内存(页面大小)和RAM大小,但无济于事.任何人都可以告诉我如何消除此错误?

java heap jvm

260
推荐指数
13
解决办法
90万
查看次数

如何退回Eclipse调试器?

是否可以在Eclipse调试器中执行反向执行?我正在处理的当前项目需要至少5秒钟才能完成任何操作之前从文件中读取和初始化数据.如果我在调试器中超越,我必须终止程序并重新启动,这需要相当长的时间.

eclipse debugging

127
推荐指数
4
解决办法
9万
查看次数

64位操作系统上32位JVM的最大Java堆大小

问题不在于32位操作系统上的最大堆大小,因为32位操作系统的最大可寻址内存大小为4GB,并且JVM的最大堆大小取决于可以保留多少连续空闲内存.

我更感兴趣的是知道在64位操作系统中运行的32位JVM的最大(理论上和实际可实现的)堆大小.基本上,我正在寻找与SO相关问题中的数字类似答案.

至于为什么使用32位JVM而不是64位JVM,原因不是技术性的,而是行政/官僚性的 - 在生产环境中安装64位JVM可能为时已晚.

java jvm

104
推荐指数
7
解决办法
29万
查看次数

"VM初始化期间出错; 无法使用-Xmx3G为对象堆保留足够的空间

首先,我有一个8GB的内存盒,所以我怀疑总内存是什么问题.此应用程序在6GB或更低的机器上运行良好.

我试图在Eclipse的Run Configurations中的"VM Arguments"下使用-Xmx3G保留3GB的空间.

每次我尝试保留超过1500mb时,我都会收到此错误:"VM初始化期间出错; 无法使用-Xmx3G为对象堆保留足够的空间

这里发生了什么?

java eclipse jvm jvm-arguments

78
推荐指数
8
解决办法
52万
查看次数

Java拒绝启动 - 无法为对象堆保留足够的空间

背景

我们有大约20个Linux刀片池.有些正在运行Suse,有些正在运行Redhat.ALL共享NAS空间,其中包含以下3个文件夹:

  • / NAS/app/java - 指向Java JDK安装的符号链接.目前版本为1.5.0_10
  • / NAS/app/lib - 指向我们的应用程序版本的符号链接.
  • / NAS/data - 写入输出的目录

我们所有的机器都有2个处理器(超线程),4GB物理内存和4GB交换空间.我们将每台机器在给定时间可处理的"作业"数量限制为6(此数字可能需要更改,但这不会进入当前问题,因此请暂时忽略它).

我们的一些工作设置最大堆大小为512mb,其他一些保留最大堆大小为2048mb.同样,我们意识到如果在堆大小设置为2048的同一台机器上启动了6个作业,我们可以查看可用内存,但据我们所知,这还没有发生.

问题

有一段时间,作业将立即失败,并显示以下消息:

Error occurred during initialization of VM
Could not reserve enough space for object heap
Could not create the Java virtual machine.
Run Code Online (Sandbox Code Playgroud)

我们曾经在同一台机器上同时运行太多工作.这个问题很少发生(可能每月一次),我们只是重新启动它,一切都会好的.

这个问题最近变得更糟.我们所有请求最大堆大小为2048m的作业几乎每次都会立即失败,需要在完成之前重新启动几次.

我们已经去了各个机器,并尝试使用相同的结果手动执行它们.

调试

事实证明,问题只存在于我们的SuSE盒子中.它更频繁发生的原因是因为我们一直在添加更多的机器,而新的机器是SuSE.

SuSE盒子上的'cat/proc/version'给我们:

Linux version 2.6.5-7.244-bigsmp (geeko@buildhost) (gcc version 3.3.3 (SuSE Linux)) #1 SMP Mon Dec 12 18:32:25 UTC 2005
Run Code Online (Sandbox Code Playgroud)

RedHat盒子上的'cat/proc/version'给我们:

Linux version 2.4.21-32.0.1.ELsmp (bhcompile@bugs.build.redhat.com) (gcc version 3.2.3 20030502 (Red Hat Linux 3.2.3-52)) #1 SMP …
Run Code Online (Sandbox Code Playgroud)

java linux memory heap jvm

49
推荐指数
4
解决办法
16万
查看次数

Java 6 Update 25 VM崩溃:内存不足

有关此问题的更新 - 请参阅下文.

我经历了(可重现的,至少对我而言)jvm 崩溃(不是OutOfMemoryError)(崩溃的应用程序是eclipse 3.6.2).但是,查看崩溃日志让我想知道:

#
# There is insufficient memory for the Java Runtime Environment to continue.
# Native memory allocation (malloc) failed to allocate 65544 bytes for Chunk::new
# Possible reasons:
#   The system is out of physical RAM or swap space
#   In 32 bit mode, the process size limit was hit
# Possible solutions:
#   Reduce memory load on the system
#   Increase physical memory or swap space
#   Check if swap …
Run Code Online (Sandbox Code Playgroud)

java eclipse windows crash jvm

20
推荐指数
1
解决办法
3万
查看次数

Java无法为对象堆错误保留足够的空间

我在32位Windows和4 GB RAM上运行Java7,但是:

java -Xmx4G -Xms4G -jar Minecraft.jar 
java -Xmx3G -Xms3G -jar Minecraft.jar 
java -Xmx2G -Xms2G -jar Minecraft.jar
Run Code Online (Sandbox Code Playgroud)

......仍然无效.错误:

初始化VM时 出错无法
为对象堆保留足够的空间
错误:无法创建Java虚拟机.
错误:发生了致命异常.程序将会退出.

java -Xmx1G -Xms1G -jar Minecraft.jar工作中.为什么?

java jvm minecraft

20
推荐指数
5
解决办法
28万
查看次数

有没有办法强制JVM使用swap,无论内存需求有多大?

这是我的情况:我手头有一项需要大量记忆的任务.我没有足够的ram,无论我尝试了什么(Jrockit和/ 3gb交换机等),我都不能给JVM足够的ram并且操作以异常终止,告诉我需要更多的堆空间.

有什么方法可以强制JVM使用操作系统的交换机制,以便它不会耗尽内存?这是Windows xp 32位

这需要很长时间,但我不在乎,我只需要完成这项操作.

我的选项用完了,而且我无法控制任何变量.

这是一个必需的编辑,因为我几乎每个人都有相同的响应:)这不是我的代码.有人编写了一个将xml文件读入存储库的工具.该工具使用EMF,并立即加载整个模型.我所能做的就是为它提供XML文件.如果本机代码在Windows或Linux等下运行,操作系统会使用虚拟内存/交换空间为其提供内存,而应用程序并不知道它.我想知道是否可以对JVM做同样的事情.在Windows 32位下,-Xmx可以达到一定数量,但这还不够.出门购买新硬件暂时不适合我.所以我想知道是否有可能使JVM像本机进程一样工作.慢,但仍在工作.显然这是不可能的,我运气不好.我只需要知道我是否真的没有选择权.

java memory jvm

14
推荐指数
2
解决办法
2万
查看次数

Android游戏编程 - 堆问题

我在一家小型Android游戏开发公司工作,目前我遇到了一个问题.我正在使用Eclipse和Android SDK运行一个非常标准的Windows 7 x64机器.

我正在阅读我的程序的LogCat输出,想知道为什么我的游戏甚至都不会出现.我很快看到所有的堆都在增长,并且认为我可能有太多的纹理/太大的纹理等等.我确定了纹理加载的问题,然后我开始使用DDMS并注意到我的堆不会超过19MB.我剪了几个纹理,试图再次构建和运行.令我震惊的是,堆不会一直超过6.6MB.有没有人有什么建议?

tl; dr:我的堆增长到19MB然后失败了,所以我拿出了内存更昂贵的纹理,使其在堆中保持在19MB以下,现在我的堆不会超过6.6MB.

编辑:当取出更大的纹理时logcat输出:

08-19 19:19:53.744: DEBUG/dalvikvm(4699): GC_FOR_MALLOC freed 91 objects / 514016 bytes in 49ms
08-19 19:19:54.184: DEBUG/dalvikvm(4699): GC_FOR_MALLOC freed 104 objects / 494088 bytes in 48ms
08-19 19:19:54.404: WARN/ActivityManager(59): Launch timeout has expired, giving up wake lock!
08-19 19:19:54.764: DEBUG/dalvikvm(4699): GC_FOR_MALLOC freed 85 objects / 384664 bytes in 49ms
08-19 19:19:54.935: WARN/ActivityManager(59): Activity idle timeout for HistoryRecord{4612eec8 com.wickeyware.zombiearcher.android/.AndroidGame}
08-19 19:19:55.234: DEBUG/dalvikvm(4699): GC_FOR_MALLOC freed 104 objects / 504648 bytes in 47ms
08-19 19:19:55.875: DEBUG/dalvikvm(4699): GC_FOR_MALLOC …

heap android dalvik libgdx

8
推荐指数
1
解决办法
1449
查看次数

为什么我不能用Eclipse的1024 MB RAM从Eclipse启动AVD?

因此,就像许多人用Eclipse开始Android开发一样,即使使用快速机器,我也注意到模拟器的运行速度令人沮丧.

我搜索SO以获得使其运行更快的任何提示,并且我遇到了这个问题,其最佳答案表明了一些事情,包括使AVD拥有更多RAM.他们建议1024MB:

在此输入图像描述

听起来不错.但是当我尝试启动它时,我得到了这个:

Failed to allocate memory: 8
This application has requested the Runtime to terminate it in an unusual way.
Please contact the application's support team for more information.
Run Code Online (Sandbox Code Playgroud)

如果我将它设置为512MB(从默认的256MB开始),则启动正常.

但是,为什么在具有12GB物理RAM的Windows 7 x64机器上我不能为AVD分配1024MB?这是Eclipse的限制吗?模拟器限制?Java限制?我认为那个人在另一个问题上得到了它的工作,但我还没弄清楚我在其他地方看到的大多数反应如何说"是的,将它拨到512MB",这不是我正在寻找的答案.

eclipse android android-virtual-device android-emulator

8
推荐指数
2
解决办法
1万
查看次数