java.lang.OutOfMemoryError:Java 堆空间 - Appium - TestNG 套件
Posted
技术标签:
【中文标题】java.lang.OutOfMemoryError:Java 堆空间 - Appium - TestNG 套件【英文标题】:java.lang.OutOfMemoryError: Java heap space - Appium - TestNG Suite 【发布时间】:2015-05-28 14:29:08 【问题描述】:我们在 Windows 机器上运行 Appium android 测试脚本执行时看到 Java 堆空间异常。我们使用 Apache POI 读取测试数据表。直到第 11 个脚本套件运行良好,从第 12 个脚本开始看到 Java 堆空间异常。
我在系统环境变量中增加了堆和预置空间enter code here
,并在 Eclipse 中增加了 TestNG 运行配置。有时没有问题,有时会遇到 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 堆空间异常
https://app.box.com/s/9t3or72lk44liolz8x22n9s0pk2klrna
【问题讨论】:
【参考方案1】:您需要检查堆转储。添加以下虚拟机参数:
-XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/some/location
下次获得 OOME 时,这将转储类似以下内容
java_pid27643.hprof
然后使用 jvisualvm 来加载 heapdump。 linux中的命令是:
$ jvisualvm &
您将需要加载并检查转储文件并尝试找出导致 OOME 的原因。文档here
【讨论】:
以上是关于java.lang.OutOfMemoryError:Java 堆空间 - Appium - TestNG 套件的主要内容,如果未能解决你的问题,请参考以下文章