Проверьте ограничение памяти Java JVM в Windows XP - PullRequest
2 голосов
/ 06 января 2012

Я хочу посмотреть, сколько памяти выделено для моей Java JVM при установке Windows XP. Я запускаю исполняемый файл jar, у которого есть главный класс, который делает некоторые вызовы JNI в библиотеку C через dll, которая загружается с использованием System.loadLibrary ("SampleJni"). Некоторые звонки работают, а некоторые нет. Всякий раз, когда передается более одного параметра String, я получаю системный дамп. Если бы у меня была только одна строка, одно целое, два целых ... и т.д., никаких сбоев. Машина имеет только 0,99 ГБ оперативной памяти, поэтому я думаю, что JVM не может выделить необходимую память.

Ответы [ 2 ]

2 голосов
/ 06 января 2012

Используйте jconsole для проверки памяти, используемой вашей программой.Jconsole поставляется с JDK, так что у вас уже есть.Эта память не будет включать память, используемую вашим кодом JNI C, но она скажет вам, какая память используется Java.Ваш более вероятный виновник - неверное отображение JNI при использовании нескольких параметров.

0 голосов
/ 06 января 2012

Я запускал JVM (Java 6) на машинах с меньшим объемом памяти, чем этот. IIRC по умолчанию для JVM в Windows было 64 МБ, но это могло измениться. Даже если это произойдет, этого должно быть достаточно для запуска. Вы бы также увидели OutOfMemoryErrors, если бы это было так, а не аварийные сбои.

Существуют различные методы в java.lang.Runtime, которые позволят вам проверить, сколько у вас памяти.

Вероятная причина - интерфейс JNI. Очень легко вывести из строя JVM, если код JNI не на 100% правильный.

...