我们遇到的情况是Java确实没有足够的内存,但是直到使用-console选项运行应用程序之前,看不到可见的错误。然后,在控制台上出现了一个错误,如:
Error occurred during initialization of VM
Could not reserve enough space for 2097152KB object heap
该应用程序的构建过程带有“如果在主线程中引发异常,则失败,但这似乎无济于事。 Configuration Image
java版本“ 1.8.0_162”
还有其他设置可以使这种内存错误更明显吗?
答案 0 :(得分:1)
这样的验证脚本可以验证您想要的内容,并可以引发弹出窗口,如下面的示例所示(以下示例检查内核,并且该内核不是所需的版本,而不是不支持通过通知OS引发的消息): 根据您的情况,更改逻辑以验证是否有足够的内存。
String logfile = "/opt/ServiceStatus" + (String)context.getVariable("sys.version");
PrintWriter writer = new PrintWriter(new FileWriter(logfile, true));
String shellcommand = "uname -a";
Process p = Runtime.getRuntime().exec(shellcommand);
p.waitFor();
BufferedReader buf = new BufferedReader(new InputStreamReader(p.getInputStream()));
String line = "";
String output = "";
while ((line = buf.readLine()) != null)
{
output += line + "\n";
}
if (!output.contains("3.10.0-514.el7.x86_64"))
{
Util.showMessage("OS not suppurted");
writer.println("OS not suppurted: " + output);
writer.close();
return false;
}
writer.println("OS: " + output);
writer.close();
return true;