下载安卓APP箭头
箭头给我发消息

客服QQ:3315713922

使用Java编程高效率、省内存的技巧

作者:课课家教育     来源: http://www.kokojia.com点击数:909发布时间: 2016-11-18 08:29:22

标签: 数据库JavaWEB系统

大神带你学编程,欢迎选课

  在程序员的世界中,流行着一句话,那就是“java完了,只等着衰亡吧!”。这句话究竟是什么意思呢?其实就是说明了使用Java程序制作系统的时候是非常占用内存的。也许会有一堆的人拿出很多的性能测试报告来否认这一点。其实在小编看来,小编也并不认为使用Java程序制作出来的系统会比其他语言开发出来的系统更加的占用内存。那么为什么会有人说它占用内存呢?其实就是一些不良的习惯引起的。

  你是否也想使用java编程的时候,效率可以更加的高效,内存可以更加的节省呢?那就一起来学习一下以下这九个小技巧吧。相信当你学会这几个技巧以后,你再也不会说使用Java程序制作出来的系统会占用内存。详细请参考下面的教程。

  技巧一:使用StringBuffer代替字符串进行相加

  小编要介绍的第一个技巧就是:使用StringBuffer代替字符串进行相加。其实这一个技巧,小编真的不想多说了,毕竟这个真的已经被人说过很多很多次了。在这里,小编就给大家讲一个不是笑话的笑话吧。小编在查看国内某个著名使用java开发的WEB系统的时候,竟然发现该系统里面的源码,大多数都是使用了字符串相加的。更加可笑的是,小编发现在一个拼装SQL语句的方法中,竟然最多构造了差不多一百个string实例。遇见这种情况,小编真的是哭笑不得啊。

使用Java编程高效率、省内存的技巧_数据库_Java_WEB系统_课课家

  技巧二:不要使用newBoolean()

  作为一名程序员,可能会发现在很多的场景中,使用Boolean类型是必须的事情。比如说:在JDBC(Java Data Base Connectivity,java数据库连接)中,同属于boolean类型的get以及set往往都是通过Boolean来进行封装传递的,而大部分的ORM也是通过Boolean来进行封装boolean类型的。为了方便大家理解,小编特意找了一些引用的片段,具体的引用片段,如图所示:

封装boolean类型

  通常情况下,在这些系统中所构造的Boolean实例的个数是非常多的。所以大家可以发现在这些系统,充满了大量Boolean实例小对象,这往往就是相当消耗内存的。实际上,使用Boolean类仅仅只需要两个实例就已经足够了,一个是false的实例,而另外一个则是true的实例。

  在Boolean类中,它为大家提供了两个静态变量。为了方便大家理解,小编特意找了一些引用的片段,具体的引用片段,如图所示:

提供了两个静态变量

  因为return (b ? TRUE : FALSE)是valueOf的内部实现方法,所以这是可以相当的节省大量的内存。相信如果Java规范就可以直接的将Boolean的构造函数规定成为private的话,那么就再也不会出现这种情况了。

  技巧三:不要使用newInteger

  其实这也是和Boolean非常类似的,在java开发中,我们在使用Integer封装int的场景也是非常多的,并且通常情况下,我们都要使用int表示的数值一般都是非常小的。在SUNSDK中,对于Integer的实例化进行了一些优化,Integer类缓存了256个状态的Integer(即从-128直到127),假如说我们使用Integer.valueOf(inti)的话,而传入的int范围要刚刚好是在这里面,就可以直接的返回到静态实例。这样子话,假如我们使用Integer.valueOf来代替newInteger的话,也会大大的降低占用内存的可能性。如果在我们的系统中,要在不同的SDK(比如说:IBMSDK)中使用的话,那么我们可以自己做了工具类进行封装一下(比如说:IntegerUtils.valueOf())。这样操作的话,那么我们就可以在任何SDK中都可以使用这种特性。是不是非常的方便呢?

  技巧四:过渡滥用哈希表

  为了可以提高系统的运行速度,一般情况下,具有一定开发经验的开发人员通常都会使用hash表(在JDK中,hash表一个实现就是HashMap)来进行缓存一些数据。比如说:使用HashMap缓存一些基础资料(人员信息、物料信息等等)。使用这种方法,在提高系统的运行速度的同时也一定程度上加大了系统的内存占用,特别是当缓存的资料比较多的时候,这就会显得特别明显了。

  为了可以顺利的解决这个问题,其实我们还可以使用操作系统中的缓存概念来进行解决。通俗一点来说,就是给被缓存的分配一个具有一定大小的缓存容器,然后按照一定的算法淘汰一些并不需要继续缓存的对象。这样操作的话,一方面会因为进行了对象缓存而顺利的提高了系统的运行效率。同一时间,因为这个缓存容器不是无限制扩大的,所以在一定程度上也相对的减少了系统的内存占用。现在有很多开源的缓存实现项目,比如说:oscache、ehcache等实现项目。实际上这些项目都是实现了MRU(链路层Maximum-Receive-Unit )、FIFO(先入先出队列First Input First Output)等常见的缓存算法。

  技巧五:避免和过深的方法调以及过深的类层次结构

  为什么要避免这两者呢?那是因为这两者都是非常占用内存的。特别是方法调用,这更加是一个堆栈空间的消耗大户。所以为了我们的内存着想,还是避免使用较为适合。

  技巧六:当我们在使用到变量时候,才将其进行实例化以及定义。

  技巧七:为了可以保证每一个IO的操作,因此我们要及时的关闭connection。

  技巧八:一定要尽量的避免使用static变量,当然啦,我们可以使用final来代替类内私有常量。

  技巧九:为了可以节省内存,对于一些经常使用的对象,我们可以采用对象池的技术。

  小编结语:

  以上就是小编为大家分享的“使用Java编程高效率、省内存的技巧”,只要合理运用这些技巧,就可以节省出更多的内存。如果大家还有更好的实用技巧,可以和小编分享哟。相关的编程语言教程,可以登录课课家网络学习平台,学习更多的Java入门教程。

赞(10)
踩(0)
分享到:
华为认证网络工程师 HCIE直播课视频教程