java - script - start-process powershell
Ejecutar Java de forma remota con PowerShell (3)
Cuando ejecuto PowerShell en una sesión remota ( etsn {servername}
), a veces parece que no puedo ejecutar procesos Java, incluso los más simples:
[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
es un "¡Hola, mundo!" aplicación que debería simplemente imprimir "Hola" a la salida estándar .
Entonces, la pregunta es, ¿hay algo especial sobre la ejecución de procesos en el otro lado de una sesión de PowerShell? ¿Hay algo especial sobre cómo funciona la máquina virtual de Java que podría no permitir un tratamiento como este? La memoria está asignada en la computadora remota, ¿verdad? Aquí hay una lectura de la memoria física disponible:
[chi-queuing]: PS C:/temp> $mem = Get-wmiobject -class Win32_OperatingSystem
[chi-queuing]: PS C:/temp> $mem.FreePhysicalMemory
1013000
Pero cuando remito el escritorio al servidor y le pregunto al sistema operativo cuánta memoria libre hay, dice 270 MB de memoria física libre. ¡Déjame saber lo que piensas!
De acuerdo con esto: http://msdn.microsoft.com/en-us/library/aa384372(VS.85).aspx
MaxMemoryPerShellMB Especifica la cantidad máxima de memoria asignada por shell, incluidos los procesos hijo del shell. El valor predeterminado es 150 MB .
Aumentar la memoria máxima por MB de Shell
winrm set winrm/config/winrs ''@{MaxMemoryPerShellMB="1000"}''
Tengo una respuesta diferente para compartir con ustedes. Me encontré en la misma situación y el aumento de la memoria min / max para Java.exe o el uso de winrm NO resolvió mi problema.
Comparé dos servidores: uno que funciona y otro que no funciona.
Utilicé este enlace https://technet.microsoft.com/en-us/library/ff520073%28v=ws.10%29.aspx para verificar mi Windows Management Foundation que se necesita para ejecutar WINRS y también PowerShell remoto.
el resultado: ambos servidores ejecutando Windows Server 2008 R2. Un servidor que ejecuta WMF 2.0, uno que ejecuta WMF 3.0.
Para mi sorpresa, el servidor que ejecutaba 2.0 funcionaba y el que ejecutaba 3.0 NO.
Mi solución: ¡actualicé el 3.0 WMF a 4.0!
Solo un fyi: sufrimos los mismos síntomas y tuvimos una investigación interminable basada en las otras dos respuestas. La solución real para nosotros fue cambiar jdk1.8.0_31 a jdk1.8.0_51.