8

当我在远程会话 ( ) 中运行PowerShelletsn {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”打印到标准输出的应用程序。

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

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

但是,当我远程桌面到服务器并询问操作系统有多少可用内存时,它说有 270 MB 物理内存可用。让我知道你的想法!

4

3 回答 3

11

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

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

增加每个 Shell MB 的最大内存

winrm set winrm/config/winrs '@{MaxMemoryPerShellMB="1000"}' 
于 2011-01-20T02:01:37.080 回答
0

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

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

我使用此链接https://technet.microsoft.com/en-us/library/ff520073%28v=ws.10%29.aspx来检查运行 WINRS 和远程 powershell 所需的 Windows Management Foundation。

结果:两台服务器都运行 Windows Server 2008 R2。一台运行 WMF 2.0 的服务器,一台运行 WMF 3.0。

令我惊讶的是,运行 2.0 的服务器正在运行,而运行 3.0 的服务器却没有!

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

于 2015-04-07T13:51:41.287 回答
0

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

于 2015-12-02T13:57:13.053 回答