小编Adr*_*eis的帖子

Java - 每次执行循环需要更长时间吗?

我正在研究一些涉及将邮政编码,城市和国家存储在一起的J2EE项目.我们开发了一个Java类来处理每个国家文件的集成(包含每个邮政编码和每个城市).问题是,对于一些国家(英国,荷兰......),文件非常紧凑(400,000到800.000行).

我有一个while()循环读取下一行,获取信息并将其存储到我的数据库中.问题是,对于1000或10.000的第一行,这个过程很快,非常快,然后每次进入循环时似乎都在减慢,然后恰好抛出HeapSpaceOverflowException150.000行之后.

我首先想到一些对象不是垃圾收集并且减慢了我的算法,但我无法弄清楚哪一个.此外,当我在我的PC上运行此算法时,JConsole告诉我堆空间定期清理(似乎是垃圾收集),但过程仍然更慢更慢...

以下是该方法的代码:

FileReader fr = new FileReader(nomFichier);
BufferedReader br = new BufferedReader(fr);

int index = 0; String ligne; String codePostal; String nomVille; 
String codePays; PPays pays; String[] colonnes;

while ((ligne = br.readLine()) != null)
{
    System.out.println("line "+ ++index);

    colonnes = ligne.split(Pattern.quote(";"));

    codePostal = colonnes[9];
    nomVille   = colonnes[8];
    codePays   = colonnes[0];

    pays = this.pc.getByCodePays(codePays);

    this.pc.getByCodePostalAndVilleAndINSEE(codePostal, nomVille, pays.getNomPays(), "");
}
Run Code Online (Sandbox Code Playgroud)

变量this.pc通过@Inject注释注入.

有人可以帮我弄清楚为什么这段代码变得越来越慢?

非常感谢.

编辑:为了完成,我添加了get...()方法的代码:

public Codepostalville getByCodePostalAndVilleAndINSEE(String codePostal, String ville, 
                                                       String pays, …
Run Code Online (Sandbox Code Playgroud)

java heap performance loops jpa

9
推荐指数
1
解决办法
745
查看次数

标签 统计

heap ×1

java ×1

jpa ×1

loops ×1

performance ×1