今天测试String和StringBuffer的区别  是两个小例子分别用循环做字符串连接当循环次数到500万时,报错如题我到网上搜索了一下 是jvm虚拟机的默认Heap大小问题, 我修改了heap为最大值可是最终如果需要更大的循环数,那肯定还是会报错的我想请大家指教  怎样 在内存有限的情况下 解决超大循环的问题?

解决方案 »

  1.   

    Windows有个虚拟内存,实际上就是拿个文件来模拟内存使用,把该放到内存中放到一个文件中去,什么效率啊之类的问题需要好好考虑
      

  2.   

    楼主这样做,是完全不符合一个程序员的做法的。
    正常的来说,不可能达到你说的那个数据的循环次数,再大的内存,要多大。一般都是1G的,你想要达到多大,服务器也一般4G以上,你完全可以用很少的循环来做,做好的方法是把你要连接的所有的字符串放在一个文本文件里,然后通过inputstream 读取这个文本里的信息。做编程,得学会变通。你说的循环500万,这是行不通的。
      

  3.   

      楼主的意思是想知道 如何避免这个问题的思路。
      
      关注。ing
      

  4.   

    我只想告诉楼主  你想要循环容量大,就必须牺牲速度
    你在循环体内加两句:System.gc();Thread.sleep(5);
    这样,我想应该有足够的时间去垃圾收集了.
    如果这样还不行的话,你就让它睡久一点
      

  5.   


    rypgood说的 是个办法。我昨天也看了一下gc的资料
    好像可行哦还有其他的建议吗?minna th ?
      

  6.   

    感谢大家的关注。
    感谢 LexChen   chengwei1104    rypgood   的指教。
      

  7.   

    不是内存大小的问题
    而是内存用量增长过快gc来不及运行回收就out了