zoukankan      html  css  js  c++  java
  • StringBuffer和String需要注意的

      首先,StringBuffer的toString方法和String的subString方法都是在新生成了一个新的String。  

      最近做的一个功能,多线程的从SQLite数据库中读取数据。将数据拼成在MySQL中可以批量执行的SQL语句,再多线程地插入到MySQL中。

      SQL语句类似:Insert Into tableXXX (colum1,colum2,colum3) values (value1,value2,value3),(value1,value2,value3),(),...;

      用到了StringBuffer的toString方法,这样是有潜在危险的。上面的SQL会非常的大,我这里一次从SQLite数据库中读取5000条数据。

      拼成的SQL语句调用toString时,是基于原来的StringBuffer生成了一个String。原来的StringBuffer不释放时,新的String就存在引用关系。

        这在大数据量、多线程的情况下将被放大。

      类似的问题也存在于String的subString方法,是基于原来的String生成了一个String。速度得到了提升,但是却存在内存泄露的问题。JDK1.7中针对这个问题做出了修正。

      关于内存的使用,还有一些日常需要注意的地方:

      1.去掉无用的import引用,快捷键ctrl + shift + o即可。

      2.去掉System.out.println

      3.可以多使用一维数组,我们可以通过能内存查看工具发现,JVM中实例最多的是一维数组,因为很多容器类底层是一维数组。

      

  • 相关阅读:
    “做”的“累”
    举国默哀三天
    AjaxRequest
    客户端表单验证js
    书籍下载链接
    Html元素动态添加方法
    java文件读写操作
    查看oracle当前session
    转一篇有关Java的内存泄露的文章(受益哦)
    《高效能人士的七个习惯》摘录
  • 原文地址:https://www.cnblogs.com/lnlvinso/p/4733942.html
Copyright © 2011-2022 走看看