我正在将我的脚趾浸入Spring中,并且我一直在使用SimpleJdbcTemplate来帮助减少我需要编写的代码量,但我现在遇到一个问题,即异常“java.lang.OutOfMemoryError:GC开销超出限制“被抛出。我一直在使用他们的网络服务从eBay中提取类别,我使用调用jdbTemplate.update插入每个类别(我认为大约10,000条记录)(见下面的代码)
CategoryService:
// If the category already exist (i.e. an error is throuwn as the version must be unique) than do now bother sotring the categories
for(CategoryType ct : categories)
{
try
{
// TODO: Determine why a child ategory can be tied to multiple parents, for now just use the first category in the array
categoryDao.SaveCategory(ct.getCategoryID(), ct.getCategoryName(), ct.getCategoryParentID()[0]);
}
catch(DuplicateKeyException e)
{
// No problem here, the version description is the same... just continue as if nothing happened
}
}
CategoryDaoImpl :( CategoryDao接口的实现)
@Override
public int SaveCategory(String ebayCategoryId, String ebayCategoryName, String ebayParentCategoryId)
{
// Firstly grab the next value in the categoru sequence
int internalCategoryId = jdbcTemplate.queryForInt(categorySequenceStatement);
// Insert the new category
jdbcTemplate.update(insertCategoryStatement, new Object[] {internalCategoryId, ebayCategoryId, ebayCategoryName, ebayParentCategoryId});
return internalCategoryId;
}
环境:
我曾在SimpleJdbcTemplate上使用batchUpdate方法,但我不确定这里是否存在潜在问题。
任何帮助将不胜感激!
答案 0 :(得分:1)
立即停止将所有类别加载到内存中。处理每个类别。它将至少快一个数量级,不会导致OOME。