“没有足够的存储空间来处理此命令”

时间:2009-07-08 12:05:26

标签: java java-native-interface

当我的程序运行时,出现以下错误:

Excepiton in theard "AWT -EventQueue -1" java.lang.UnsatisfiedLinkError: program.dll: Not enough storage is avaliable to process this command

[java] at java.lang.ClassLoader$NativeLibrary.load<Native Method>
[java] at java.lang.ClassLoader.loadLibrary0<ClassLoader.java:1751>
[java] at java.lang.ClassLoader.loadLibrary<ClassLoader.java:1647>
[java] at java.lang.Runtime.load0<Runtime.java:769>
[java] at java.lang.System.load<System.java:968>

我该如何解决这个问题...

感谢您的帮助..

2 个答案:

答案 0 :(得分:1)

这是来自Windows的消息,表明您的内存耗尽 - 不是您的Java堆,而是机器堆。在尝试运行应用程序时,计算机上的内存如何显示?

答案 1 :(得分:1)

当将本机库加载到JVM中时,它们被映射到JVM地址空间,并且它们为分配内存而进行的任何调用都在该地址空间中进行 - 因此在32位世界中,您最多可以使用4GB

竞争这个4GB是JVM和它的堆(尽管我认为除了JVM特定的地址空间之外,堆大小也有限制。)

无论如何,根据您对@ akf的答案的评论,它看起来有充足的记忆。

我还认为“存储”一词不仅仅指内存。

来自java.lang.UnsatisfiedLinkError上的Javadoc:

  

如果是Java虚拟机,则抛出该异常   找不到合适的   本地语言定义方法   宣称是原生的。

请解释/确认:

    您的program.dll上的
  • java.library.path,您是否成功调用了其他方法。
  • 什么是program.dll以及你用它做什么。