«Не удалось создать виртуальную машину Java», вызванную вирусом или машиной, запуталась? - PullRequest
7 голосов
/ 20 мая 2011

enter image description here

Я использую двухъядерный компьютер XP с установленной памятью 4 ГБ (но только ОС 2,5 ГБ сообщается ОС из-за 32-битного факта).Я активно модифицирую старое приложение JAVA, по крайней мере, в течение месяца, используя lastest Eclipse (редактирование, сборка и запуск) и Ant (еще один способ сборки и запуска).В конфигурации запуска Eclipse и файле build.xml у нас есть следующие параметры JVM: -Xmx1024M -Xms1024M -Xmn384M.Мы использовали эту конфигурацию в течение многих лет.

У меня также есть командный файл для запуска Eclipse с этим параметром: -vmargs -Xmx768M.Этот пакетный файл был со мной в течение многих лет.(теперь я изменил, чтобы изменить eclipse.ini для настройки.)

Позавчера я обнаружил, что намного медленнее, когда я использовал Ant для сборки и запуска своего приложения (я собираю и часто запускаю его во времяпроцесс модификации).Я перезапустил свою машину как раз перед тем, как идти домой.Той ночью я подключил VPN к своей машине, чтобы закончить некоторые модификации (я очень хороший сотрудник), и обнаружил, что медленнее.На следующее утро « не смог создать виртуальную машину Java », когда я запустил наше приложение с Ant.

. Я перезапустил свою машину.Тогда я не смог запустить Eclipse с той же ошибкой.Я должен изменить vmargs, чтобы требовать только 512 МБ памяти для запуска Eclipse.Время сборки Ant увеличено с 20 до 6 минут.И мне нужно уменьшить максимальную память для JVM до

-Xmx512M -Xms512M

как в конфигурации запуска Eclipse, так и в Ant build.xml, чтобы избежать ошибки.

Затем я удаляю свой 1.6u24 jdk /JR и установлен 1.6u25.Я переустановил Затмение.Сканировал всю машину с помощью Trend Micro и ничего не нашел.

Другая машина, к которой я обычно подключаюсь для тестирования, имеет аналогичный результат (медленнее).Все остальные машины, включая машину моего коллеги и мой ноутбук, отлично работают с тем же приложением и инструментами.

Если я использую Ant для сборки и запуска, процесс сборки и запуска будут очень медленными.Я создал два командных файла для компиляции и запуска моего приложения.Они работают как обычно.Когда компилируется с Eclipse, он работает как обычно.Но я не могу попросить JVM требовать 1024MB для моего приложения во всех случаях сейчас.

Все остальные действия на моей машине кажутся нормальными.Приложение VisualStudio и C # работают как обычно.Моя машина была восстановлена ​​несколько недель назад из-за сбоя жесткого диска.Так что не так много бесполезных вещей, которые замедляют работу моей машины.

Кто-нибудь может помочь мне понять, почему JVM на моей машине изменил свое поведение?Я надеюсь, что это не вызвано вирусом.Знаете ли вы что-нибудь, что я могу попробовать, прежде чем позвонить в ИТ, чтобы восстановить мою машину?

спасибо,

Ответы [ 4 ]

6 голосов
/ 20 мая 2011

Хотя ваша конфигурация может не измениться, это не значит, что объем доступной памяти не изменился.Память используется всеми программами в операционной системе, поэтому, если другая программа использует немного больший объем памяти, может быть невозможным предварительно назначить 1 ГБ памяти, которую вы указали (из аргументов командной строки), которая должна быть доступна для запускаJVM.

Другая возможность состоит в том, что какая-то новая программа установлена ​​/ запущена, и она уходит с необходимой вам памятью.Сканирование на вирусы могло быть установлено / обновлено, и оно само по себе может сильно затормозить память (в зависимости от продукта).

Наконец, вы упомянули, что машина была восстановлена.Возможно, вы захотите проверить (через BIOS), что у вас на самом деле столько же физической памяти, сколько было до восстановления.У машин с перестройкой есть забавный способ выдавливать из памяти гнезда памяти (или, возможно, восстановление происходило больше, чем кажется на первый взгляд).Проблема может быть настолько простой, что недостаточно памяти для предварительного назначения JVM, потому что вы начинаете с less.

Если все это подтвердится, проверьте непонятные вещи.Если вы переустановили очень старую или другую операционную систему, она может не поддерживать доступ к тому количеству памяти, которое установлено.Это обычно происходит, когда кто-то возвращается из 64-разрядной установки в 32-разрядную установку.

1 голос
/ 21 мая 2011

Либо воспользуйтесь диспетчером задач или проводником процессов от Microsoft (http://technet.microsoft.com/en-us/sysinternals/bb896653)) и проверьте, не перегружены ли вы памятью. Если вам необходимо уменьшить объем используемой памяти, скорее всего, это происходит из-за того, что ее занял другой объект. Я нахожу кепку в 2,5 ГБ немного странной, так как я думал, что кепка больше похожа на 3,25 ГБ (в основном потому, что это то, что у меня есть на моем Windows XP с установленным 4 ГБ).

Кроме того, каждый раз, когда я вижу это сообщение об ошибке, это происходит потому, что недостаточно физической памяти, доступной для захвата. В прошлом мне приходилось закрывать программы, чтобы выполнить несколько вещей после получения этого исключения.

(Я бы поставил это в комментарии, но пока не получил рейтинг: /)

0 голосов
/ 20 мая 2011

Это больше похоже на проблему конфигурации, чем на вирус, особенно если учесть, что он был недавно восстановлен. Вы не упомянули, используете ли вы 32-битную или 64-битную Java. Это может помочь узнать, какой из них пытается работать в случае сбоя.

Другие вещи для проверки: настройки виртуальной памяти; любые специфичные для приложения настройки в ОС; настройки антивирусной программы; другие процессы (попробуйте запустить HijackThis и / или MSRT ).

0 голосов
/ 20 мая 2011

Можете ли вы увидеть что-то странное в диспетчере задач?Загрузка процессора?Тот факт, что вы не можете выделить столько памяти, сколько раньше, звучит странно, но я видел такое же сокращение времени компиляции после обновления антивируса на одной из моих машин разработки.

Что произойдет, если вы отключите антивирус во время компиляции?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...