小编Red*_*olf的帖子

为什么我的程序越来越慢?

我正在使用该程序将数据从数据库发送到Excel文件.它在开始时工作正常然后变得越来越慢,最后它耗尽了内存并出现以下错误:"java.lang.OutOfMemoryError:Java堆空间......".

可以通过添加jvm堆sapce来解决这个问题.但问题是它花了太多时间来运行程序.

几分钟后,它完成一个4秒的循环,可以在开始时0.5秒完成.我无法找到一个解决方案,使它始终以一定的速度运行.

这是我的代码问题吗?

这有什么线索吗?

这是代码:

public void addAnswerRow(List<FinalUsers> finalUsersList,WritableWorkbook book){

   if (finalUsersList.size() >0 ) {
    try {
       WritableSheet  sheet = book.createSheet("Answer", 0);
       int colCount = 0;
       sheet.addCell(new Label(colCount++,0,"Number"));
       sheet.addCell(new Label(colCount++,0,"SchoolNumber"));
       sheet.addCell(new Label(colCount++,0,"District"));
       sheet.addCell(new Label(colCount++,0,"SchoolName"));
       sheet.setColumnView(1, 15);
       sheet.setColumnView(3, 25);

       List<Elements> elementsList = this.elementsManager.getObjectElementsByEduTypeAndQuestionnaireType(finalUsersList.get(0).getEducationType().getId(),     this.getQuestionnaireByFinalUsersType(finalUsersList.get(0).getFinalUsersType().getId()));

       Collections.sort(elementsList, new Comparator<Elements>(){

           public int compare(Elements o1, Elements o2) {

             for(int i=0; i< ( o1.getItemNO().length()>o2.getItemNO().length()?  o2.getItemNO().length(): o1.getItemNO().length());i++){
                  if (CommonFun.isNumberic(o1.getItemNO().substring(0, o1.getItemNO().length()>3? 4: o1.getItemNO().length()-1)) && !CommonFun.isNumberic(o2.getItemNO().substring(0, o2.getItemNO().length()>3? 4: o2.getItemNO().length()-1))){
                 return 1;
                  }
                 if (!CommonFun.isNumberic(o1.getItemNO().substring(0, o1.getItemNO().length()>3? 4: o1.getItemNO().length()-1)) && …
Run Code Online (Sandbox Code Playgroud)

java memory jvm memory-management

5
推荐指数
1
解决办法
2142
查看次数

标签 统计

java ×1

jvm ×1

memory ×1

memory-management ×1