在 Windows 计算机上运行 Appium Android 测试脚本时,我们看到 Java 堆空间异常。我们使用 Apache POI 测试数据表读取。直到第11个脚本套件运行良好,从第12个脚本开始看到Java堆空间异常。
我在 Eclipse 的系统环境变量和 TestNG 运行配置中增加了堆和 prem 空间在此处输入代码
。有时没有问题,有时会出现Java堆空间异常。
通过以下消息,我怀疑使用 fileinputstream 读取测试数据表,根据其他论坛,尽管测试数据没有大量数据,但加载时会占用更多内存。
我使用的代码是:
File strExecutionConfigFile = new File(
strImportedExecutionConfigFilePath);
try {
strInputExecutionConfigFile = new FileInputStream(
strExecutionConfigFile);
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
try {
objExecutionConfigWKB = new XSSFWorkbook(
strInputExecutionConfigFile);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
我发现 XSSF 阅读器格式会消耗较低的内存。可以提供相关代码。
您可以访问以下链接了解Java堆空间异常
最佳答案
您将需要检查堆转储。添加以下虚拟机参数:
-XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/some/location
下次您获得 OOME 时,这将转储如下内容
java_pid27643.hprof
然后使用jvisualvm加载heapdump。 Linux下的命令是:
$ jvisualvm &
您需要加载并检查转储文件,并尝试找出导致 OOME 的原因。文档 here
关于java.lang.OutOfMemory错误: Java heap space - Appium - TestNG Suite,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30509497/