我得到的错误信息是:
Invalid memory access of location 0x8 rip=0x10cf4ab28
我正在做的是制作一个基本的股票回测系统,即在最新的Mac Os X上使用java eclipse迭代各种算法的大量股票/历史数据.
我找到了似乎导致它的代码.一种用于获取海量数据的方法,被称为数千次.什么都没有保留,所以我认为没有内存泄漏.然而,在我得到内存错误之前,似乎有一个约7000次的设置限制我可以迭代它.
奇怪的是它在调试模式下完美运行.有谁知道Eclipse中的调试模式有何不同?
给jvm更多的内存没有帮助,并且它似乎使用-xint正常工作.它再次在调试模式下完美运行.
public static List getStockArray(ExchangeType e){
List stockArray = new ArrayList();
if(e == ExchangeType.ALL){
stockArray.addAll(getStockArray(ExchangeType.NYSE));
stockArray.addAll(getStockArray(ExchangeType.NASDAQ));
}else if(e == ExchangeType.ETF){
stockArray.addAll(etfStockArray);
}else if(e == ExchangeType.NYSE){
stockArray.addAll(nyseStockArray);
}else if(e == ExchangeType.NASDAQ){
stockArray.addAll(nasdaqStockArray);
}
return stockArray;
}
像这样的简单循环,迭代超过1000次,将导致内存错误.但不是在调试模式下.
for (Stock stock : StockDatabase.getStockArray(ExchangeType.ETF)) {
System.out.println(stock.symbol);
}