Как странно, что другое обновление Java будет вести себя по-другому на другом конце удаленного соединения PS! Рад, что вы получили это в квадрате!

я бегуPowerShell в удаленном сеансе (etsn {servername}Иногда я не могу запустить процессы Java, даже самые простые:

[chi-queuing]: PS C:\temp> java -cp .\hello.jar Hello
Error occurred during initialization of VM
Could not reserve enough space for object heap

Hello.jar это "Привет, мир!" приложение, которое должно просто напечатать «Привет»стандартный вывод.

Итак, вопрос в том, есть ли что-то особенное в запущенных процессах на другой стороне сеанса PowerShell? Есть ли что-то особенное в том, как работает виртуальная машина Java, которая может не позволять такое лечение? Память выделяется на удаленном компьютере, верно? Вот показание на доступной физической памяти:

[chi-queuing]: PS C:\temp> $mem = Get-wmiobject -class Win32_OperatingSystem
[chi-queuing]: PS C:\temp> $mem.FreePhysicalMemory
1013000

Но когда я удаленно подключаюсь к серверу и спрашиваю у ОС, сколько там свободной памяти, появляется 270 МБ свободной физической памяти. Дайте мне знать, что вы думаете!

Ответы на вопрос(3)

чтобы поделиться с вами, ребята. Я оказался в той же ситуации, и увеличение минимальной / максимальной памяти для Java.exe или использование winrm НЕ решило мою проблему.

Я сравнил два сервера: один работает, а другой не работает.

Я использовал эту ссылкуhttps://technet.microsoft.com/en-us/library/ff520073%28v=ws.10%29.aspx чтобы проверить мой Windows Management Foundation, который необходим для запуска WINRS, а также для удаленного PowerShell.

Результат: оба сервера работают под управлением Windows Server 2008 R2. Один сервер работает под управлением WMF 2.0, один - под управлением WMF 3.0.

К моему удивлению, сервер под управлением 2.0 работал, а сервер под управлением 3.0 - НЕТ!

Мое решение: я обновил 3.0 WMF до 4.0!

 Limited Atonement07 апр. 2015 г., 20:35
Я сомневаюсь, что это была оригинальная проблема ОП, основанная на том, когда у ОП была его проблема, но, тем не менее, она полезна!
 Christian Glebbeek08 апр. 2015 г., 10:31
Я понимаю, что это не ответ на первоначальный вопрос, но хотел бы поделиться этим, потому что есть несколько обращений в Google по этому поводу. Существует официальное исправление от Microsoft, которое подтверждает это:support.microsoft.com/en-us/kb/2842230
 Christian Glebbeek07 апр. 2015 г., 15:56
это подтверждает мою теорию:github.com/xebialabs/overthere/issues/64

у нас были те же симптомы, и мы провели бесконечное расследование, основанное на двух других ответах. Фактическим решением для нас было изменение jdk1.8.0_31 на jdk1.8.0_51.

 Limited Atonement02 дек. 2015 г., 19:29
Как странно, что другое обновление Java будет вести себя по-другому на другом конце удаленного соединения PS! Рад, что вы получили это в квадрате!
Решение Вопроса

http://msdn.microsoft.com/en-us/library/aa384372(VS.85).aspx

MaxMemoryPerShellMB Задает максимальный объем памяти, выделяемый на оболочку, включая дочерние процессы оболочки. По умолчанию150 МБ.

Увеличение максимального объема памяти на оболочку, МБ
winrm set winrm/config/winrs '@{MaxMemoryPerShellMB="1000"}' 
 Limited Atonement21 янв. 2011 г., 15:09
Я буду отмечать это как ответ до тех пор, пока он не окажется неверным, но выглядит примерно так ... хотя я не могу себе представить, что JVM использует более 150 МБ для простой программы ...
 EvilPettingZu4223 июл. 2013 г., 01:12
Для PowerShell v3 или более поздней версии вам также нужно будет выполнить эту команду для увеличения квоты ОЗУ: Set-Item WSMan: \ localhost \ Plugin \ Microsoft.PowerShell \ Quotas \ MaxMemoryPerShellMB 3000
 Hyon14 мар. 2016 г., 18:07
Благодарю. У меня работал на серверах Win2008. Казалось странным, что это не проблема с нашими серверами Win2012R2. Это потому что те имеют это свойство установлено как 1024 по умолчанию, кажется.
 bart18 апр. 2012 г., 01:46
Командная строка для увеличения лимита до 1000 МБ (что сработало для меня): winrm set winrm / config / winrs '@ {MaxMemoryPerShellMB = "1000"}'

Ваш ответ на вопрос