metaclass: (Default)
metaclass ([personal profile] metaclass) wrote2012-02-25 08:31 pm

О странностях jvm

Решил я глянуть, почему валится с исключением жабокложурный сервис при остановке, подключился к нему windbg.
Так вот, у меня оный windbg начал сыпать такими Access Violation на каждое действие внутри jvm, что страшно смотреть, причем это во время работы, и извне оно никак не видно.
Такое ощущение, что там внутри сплошные повреждения памяти и разыменования нулевых указателей, но они все окружены обработкой исключений в любимом жабьем стиле и наружу не выходят.
Как-то это крайне неприятно.

[identity profile] raydac.livejournal.com 2012-02-25 05:39 pm (UTC)(link)
jvm это такая штука вобщем... вобщем она для java

[identity profile] craneop.livejournal.com 2012-02-25 05:49 pm (UTC)(link)
Что-то вы какой то анальной стоматологией занимаетесь, ребе.

[identity profile] j-sheridan.livejournal.com 2012-02-25 05:50 pm (UTC)(link)
Ребе, не суйтесь к жабам в их болото. Слушайте квакание издалека лучше...

[identity profile] volodymir-k.livejournal.com 2012-02-25 06:40 pm (UTC)(link)
Какие-то гаврики лет 10 назад писали багу, что мол под линуксом отлаживать трудно, постоянно валится с ошибками.
Багу закрыли, потому что именно так инженеры сделали что-то важное, типа исключения, и это ВПОЛНЕ ЗАКОННО. Работает, по перформансу отлично -- какие проблемы? Юзеру надо не отлаживать жвм кривыми дебаггерами, а чтобы работало. Оно работает.

Конкретно у вас могу посоветовать -- попробуйте на другой машине, на другой ОС, на другой JVM. Скорее всего у вас анальный ад с версиями msvcrt678901.dll в разных местах. Ещё вариант -- вы используете самописный jni и конечно не закрываете всё по всем правилам.

[identity profile] stdray.livejournal.com 2012-02-25 09:33 pm (UTC)(link)
Это динамика.

[identity profile] baramin.livejournal.com 2012-02-25 10:07 pm (UTC)(link)
Один умный джигит решил, что переключать контексты через железные прерывания - это хорошо (производительно - как это обосновывалось).
Если быть кратким: для JVM это норма. Но взять биту порой хочется очень. Особливо, когда отлаживаешь AWT или FX какой.

Рецепт, однако :)

[identity profile] pingback-bot.livejournal.com 2012-02-26 08:36 am (UTC)(link)
User [livejournal.com profile] gineer referenced to your post from Рецепт, однако :) (http://gineer.livejournal.com/69082.html) saying: [...] не наложить на себя руки. http://metaclass.livejournal.com/668688.html?thread=11369744#t11369744 [...]

[identity profile] fukanchik.livejournal.com 2012-02-26 05:35 pm (UTC)(link)
в линуксовой версии то же самое. я так думаю это они так комитят память (VirtualAlloc/MEM_COMMMIT).

В начале работы JVM выдяет одну область непрерывную памяти размером Xmx видимо с VirtualAlloc/MEM_RESERVE в потом видимо по мере необходимости делает коммит на каждый page fault.

[identity profile] dmitry-vk.livejournal.com 2012-02-26 06:06 pm (UTC)(link)
AV, например, используются многими GC для реализации write barrier (например, чтобы отслеживать страницы памяти, в которых произошли изменения). Также, AV используется для safepoint'ов. В общем, не надо так резко на это реагировать.