day2: 程序依然崩溃,现在只能是怀疑内存溢出的问题。
因此先修改最大内存大小,并添加 -XX:+HeapDumpOnOutOfMemoryError ,以便在发生outofmemoryError异常的时候,能够记录dump文件。
新修改的start.bat文件如下: java -Xmx512m -Xms256m -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=d:/a.dump -jar -jar ./data-migration-2.jar
自测:
新增测试程序,不停的new对象
public void test() throws InterruptedException {
List<SkuInfo> skuInfoList=new ArrayList<>();
while (true)
{
skuInfoList.add(new SkuInfo("test","2018-09-10"));
Thread.sleep(1);
System.out.println("创建一条");
}
}
然后,把启动程序设置成最大15M内存,使用java VisualVM监视查看内存情况
java -Xmx15m -Xms5m -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=d:/a.dump -jar .\man-yao-client-1.0-SNAPSHOT.jar

加载dump文件进行分析,可以看到skuinfo有86067个实例。

浙公网安备 33010602011771号