zoukankan      html  css  js  c++  java
  • java内存管理的几点小技巧

    今天看一本书,书上提到了内存泄露,后面也提到了内存管理的小技巧,在这里记下来,以免以后忘记。

    1.尽量使用直接量。比如:String str = "I can play!";而不是 String str = new String("I can play!");注意,此处并不是说后一种不对,只是相对前一种来说,后面一种方式在内存中需要创建两次对象,一次在字符创缓存池,一次是String对象底层的char[]数组。而第一种只需一次。

    2.使用String builder和String Buffer来进行字符串连接。String代表字符序列不可改变的字符串,String Builder和String Buffer代表字符序列可以改变的字符串。使用String进行字符串连接时程序会产生大量的临时字符串,会消耗系统内存。而String buffer与String builder在使用方法上几无区别,区别在于String Buffer是类似于hashtable的线程安全的,里面有一些带同步锁的方法,而String builder是类似于hashmap的线程不安全的,在单线程模式中速度较快。

    3.尽早释放无用对象的引用。例如:

    public void info(){

      Object o = new Object();

      System.out.print(o.toString);

      System.out.print(o.hashcode);

      o = null;

      //执行耗时、耗内存操作或者调用耗时耗内存的方法

    }

    4.尽量少用静态变量。jvm会将程序用static修饰的类的信息存入Permanent代,这将使得带有静态属性的类一直有效,从而使得内存空间无法回收。

    5.避免在经常调用的方法、循环中创建java对象。因为系统会不断的为创建的这些对象分配内存空间,执行初始化操作,程序的性能会受到巨大的影响。

    6.缓存经常使用的对象。有两种方式:使用hashmap进行缓存,使用某些开源的缓存项目例如Oscache、Ehcache。

    7.尽量不要使用finalize() 方法。

    8.考虑使用SoftReference软引用。

  • 相关阅读:
    MySQL和B树的那些事
    记一次临时抱佛脚的性能压测经历
    zookeeper api
    zookeeper笔记
    Mysql优化系列(1)--Innodb重要参数优化
    搞懂MySQL InnoDB B+树索引
    我以为我对Mysql索引很了解,直到我遇到了阿里的面试官
    HDFS原理概念扫盲
    设计原则
    设计模式 6大则
  • 原文地址:https://www.cnblogs.com/zzcc/p/3745878.html
Copyright © 2011-2022 走看看