gpt4 book ai didi

java - Spring SimpleJdbcTemplate : java. lang.OutOfMemoryError:超出GC开销限制

转载 作者:太空宇宙 更新时间:2023-11-04 08:33:51 25 4
gpt4 key购买 nike

我正在尝试使用 Spring,并且一直在使用 SimpleJdbcTemplate 来帮助减少需要编写的代码量,但现在遇到一个问题,抛出异常“java.lang.OutOfMemoryError:超出 GC 开销限制”。我一直在使用 eBay 的 Web 服务从 eBay 中提取类别,并使用调用 jdbTemplate.update 插入每个类别(我认为大约有 10,000 条记录)(参见下面的代码)

类别服务:

// 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 接口(interface)的实现)

@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;
}

环境:

  • Spring框架3.0.2
  • Oracle 数据库 XE(我认为是 11g!)(使用 ojdbc6.jar)
  • JDK (jdk1.6.0_26)

我曾在 SimpleJdbcTemplate 上使用过 batchUpdate 方法,但我不确定这里是否存在潜在问题。

如有任何帮助,我们将不胜感激!

最佳答案

停止一次将所有类别加载到内存中。在加载每个类别时对其进行处理。它至少会快一个数量级,并且不会导致 OOME。

关于java - Spring SimpleJdbcTemplate : java. lang.OutOfMemoryError:超出GC开销限制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6841614/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com