Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/324.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用PowerShell远程运行Java_Java_Powershell_Process_Powershell Remoting - Fatal编程技术网

使用PowerShell远程运行Java

使用PowerShell远程运行Java,java,powershell,process,powershell-remoting,Java,Powershell,Process,Powershell Remoting,当我在远程会话(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是一个“Hello,world!”应用程序,只需将“Hello”打印到 所以,

当我在远程会话(
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
是一个“Hello,world!”应用程序,只需将“Hello”打印到

所以,问题是,在PowerShell会话的另一端运行进程有什么特别之处吗?Java虚拟机的工作方式是否有一些特殊的地方不允许这样的处理?内存是在远程计算机上分配的,对吗?以下是可用物理内存上的读数:

[chi-queuing]: PS C:\temp> $mem = Get-wmiobject -class Win32_OperatingSystem
[chi-queuing]: PS C:\temp> $mem.FreePhysicalMemory
1013000
但是,当我将桌面远程连接到服务器并询问操作系统有多少可用内存时,会显示270MB物理内存可用。让我知道你的想法

根据这一点:

MaxMemoryPerShellMB 指定每个shell分配的最大内存量,包括shell的子进程。默认值为150 MB

增加每个外壳MB的最大内存
winrm set winrm/config/winrs'@{MaxMemoryPerShellMB=“1000”}

我有一个不同的答案要和你们分享。我发现自己也处于同样的情况,增加Java.exe的最小/最大内存或使用winrm并不能解决我的问题

我比较了两台服务器:一台工作,另一台不工作

我使用这个链接来检查我需要运行WINRS和远程PowS壳的Windows管理基础。 结果:两台服务器都运行Windows Server 2008 R2。一台运行WMF 2.0的服务器,一台运行WMF 3.0

令我惊讶的是,运行2.0的服务器工作正常,而运行3.0的服务器却不工作


我的解决方案:我将3.0 WMF升级到4.0

仅供参考:我们也有同样的症状,并根据其他两个答案进行了无休止的调查。
我们的实际解决方案是将jdk1.8.0_31更改为jdk1.8.0_51。

我将继续并将其标记为答案,直到证明它是错误的,但它看起来是正确的……尽管我无法想象JVM为一个简单的程序花费超过150 MB的时间……将限制提高到1000 MB的命令行(对我有效):winrm set winrm/config/winrs@{MaxMemoryPerShellMB=“1000”}'对于PowerShell v3或更高版本,您还需要运行此命令以增加RAM配额:Set Item WSMan:\localhost\Plugin\Microsoft.PowerShell\quota\MaxMemoryPerShellMB 3000Thank。在Win2008服务器上为我工作。这似乎奇怪,我们的Win2012R2服务器没有问题。这是因为这些服务器的此属性被defa设置为1024似乎是这样。此设置是在远程服务器上完成的还是从本地(启动)完成的服务器?基于OP出现问题的时间,我怀疑这是OP的原始问题,但它还是有用的!我意识到这不是原始问题的答案,但我想与大家分享这一点,因为google上对此有一些点击。微软有一个官方热修复程序承认这一点:不同的java update在PS远程连接的另一端会有不同的行为!很高兴你把它处理好了!