【问题标题】:Running Java remotely using PowerShell使用 PowerShell 远程运行 Java
【发布时间】:2011-06-12 02:49:15
【问题描述】:

当我在远程会话 (etsn {servername}) 中运行 PowerShell 时,有时我似乎无法运行 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 是一个“你好,世界!”应该只向standard output 打印“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 可用物理内存。让我知道你的想法!

【问题讨论】:

    标签: java powershell process powershell-remoting


    【解决方案1】:

    据此: 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"}' 
    

    【讨论】:

    • 我会继续并将其标记为答案,直到它被证明是错误的,但它看起来是正确的......虽然我无法想象 JVM 为一个简单的程序占用超过 150 MB 的空间...... .
    • 将限制增加到 1000 MB 的命令行(对我有用):winrm set winrm/config/winrs '@{MaxMemoryPerShellMB="1000"}'
    • 对于 PowerShell v3 或更高版本,您还需要运行此命令以增加 RAM 配额:Set-Item WSMan:\localhost\Plugin\Microsoft.PowerShell\Quotas\MaxMemoryPerShellMB 3000
    • 谢谢。在 Win2008 服务器上为我工作。奇怪的是,这不是我们的 Win2012R2 服务器的问题。这是因为默认情况下这些属性设置为 1024。
    • 这个设置是在远程服务器上还是从本地(启动)服务器上完成的?
    【解决方案2】:

    我有一个不同的答案要与大家分享。我发现自己处于同样的情况,增加 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!

    【讨论】:

    • 根据 OP 遇到问题的时间,我怀疑这是 OP 的原始问题,但它仍然很有用!
    • 我意识到这不是对原始问题的回答,但想分享这个,因为谷歌上有一些关于这个的点击。 Microsoft 有一个官方修补程序承认这一点:support.microsoft.com/en-us/kb/2842230
    【解决方案3】:

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

    【讨论】:

    • 不同的 java 更新在 PS 远程连接的另一端表现不同是多么奇怪!很高兴你把它摆平了!
    猜你喜欢
    • 2018-05-27
    • 1970-01-01
    • 2017-03-14
    • 2023-03-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-06-30
    • 1970-01-01
    相关资源
    最近更新 更多