我想看看在我的Windows XP安装上为我的Java JVM分配了多少内存。我正在运行一个可执行jar,它有一个主类,通过使用System.loadLibrary(“SampleJni”)加载的dll对C库进行一些JNI调用。有些电话有效,有些则没有。只要传递了多个String参数,我就会得到一个系统转储。如果我只有一个String,一个int,两个int ..等等,没有崩溃。机器只有.99 GB的内存,所以我认为JVM无法分配需要的内存。
答案 0 :(得分:2)
使用jconsole检查程序使用的内存。 Jconsole随JDK一起提供,因此您已拥有它。此内存不包含JNI C代码使用的内存,但它会告诉您Java正在使用的内存。您更可能的罪魁祸首是使用多个参数时JNI映射不正确。
答案 1 :(得分:0)
我在内存较少的机器上运行JVM(Java 6)。 IIRC Windows上JVM的默认值是64Mb,但这可能已经改变。即使它确实如此,它应该足以启动。如果是这种情况而不是硬崩溃,你也会看到OutOfMemoryErrors。
java.lang.Runtime中有各种methods,可以让你检查你有多少内存。
可能的原因是JNI接口。如果JNI代码不是100%正确,则很容易使JVM崩溃。