10万个字符串相加会发生什么??

最近在检查公司平台的一个BUG,BUG的具体症状是:平台用户上传了一个附件,提交时需要等待30-50分钟,有时根本传不上去。

解决BUG:

      1、我先检查了平台的日志,发现相关业务没有发生异常,检查了整个WEB服务器的日志,发现有很多"TNS:connection close"。接着我就怀疑是由于平台的链接池被耗尽,于是我就重新配置链接池,定期回收超时链接。

       2、代码上线后,用户反应该问题还是存在,但是现在可以提交了,不会出现提交不上去。但是现在还是很慢速度并没有上去。并且运维同事反一旦用户提交后,系统的CPU负载会达到一个很可怕的数量级。于是我把该业务模块的所有代码拿出来一个个剖析跟踪。结果真发现了问题,即使在本地,提交一个10万行左右的文件,也很慢。。。

慢慢一行代码段出现在了我的面前具体如下:

while((fileLine = in.readLine()) != null) {
                line_num++;
                if(CTools.checkMobileValid(fileLine)!=0) {
                  text_error = "error";
                  send_hash.put(String.valueOf(hash_num), line_num + "_" + "您输入的手机号码无效!");
                  hash_num++;
                }
                else {
                 mobilenumber += fileLine + ",";
                }
              }

 String[] mobilenumber_arry = mobilenumber .split(",");

 

mobilenumber += fileLine + ",";

 String[] mobilenumber_arry = mobilenumber .split(",");

 

 请注意代码中红色 字体部分,另外该循环大概有10万行。

看到上面的代码我很是郁闷....,这样的思路我是理解不了,也看不明白,贴一个字符串测试例子:

http://blog.csdn.net/chuan122345/archive/2007/08/12/1739806.aspx

 

通过这个例子,我们可以学习到字符串链接,有时候真会死机的。。。如果传一个20万行的文件,我将毫不怀疑会直接把服务器给挂死。。。(当然,这也取决于服务器的运算力。。。)

 

你可能感兴趣的:(jvm,多线程,数据结构,Blog)