zoukankan      html  css  js  c++  java
  • Java Memory Management Skill List

    Java内存管理小技巧:

    1. 尽量使用直接量

    当需要使用字符串,还有Byte,Short,Integer,Long,Float,Double,Boolean,Character包装类的实例时,程序不应该采用new的方式来创建对象,而应该直接采用直接量来创建它们。

    String str=”hello”; 这种方法会创建一个”hello”字符串,而且JVM的字符串缓存池还会缓存这个字符串。String str = new String(“hello”);创建了一个缓存在字符串缓存池中的”help”字符串。除此之外str所引用的String对象底层还包含一个char[]数组,这个char[]数组里依次存放了h,e,l,l,o等字符。

    1. 使用StringBuilder和StringBuffer进行字符串连接

    String代表字符序列不可辨的字符串,StringBuilder和StringBuffer都代表字符序列可变的字符串。

    如果程序使用多个String对象进行字符串连接运算,在运行时将生成大量临时字符串,这些字符串会保存在内存中从而导致程序性能下降。

    1. 尽量释放无用对象的引用

    在耗费大量内存操作之前先释放不需要的对象。比如obj=null;

    1. 尽量少用静态变量

    最坏的清空是某个对象被static变量所引用,那么垃圾回收机制通常是不会回收这个对象所占的内存。静态变量的生命周期与类相同,只要类依然被加载着,静态变量也会在内存中的Permanent代里。

    1. 避免在经常调用的方法,循环中创建Java对象

    对象的生命周期不长,很快就要进入回收状态。

    1. 缓存经常使用的对象

    使用HashMap进行缓存或者直接使用某些开源的缓存项目。如果使用HashMap进行缓存,程序员需要手动控制HashMap容器里的key-value对不至于太多,因为当key-value太多时将导致HashMap占用过大的内存,从而导致系统性能下降。OSCache,Ehcache等大多实现了FIFO,MRU等常见的缓存算法。

    1. 尽量不要使用finalize方法

    自己调用finalize方法会导致垃圾回收器的负担更大,导致程序运行效率更差。

    1. 考虑使用SoftReference

    当程序需要创建长度很大的数组时,可以考虑使用SoftReference来白装数组元素,而不是直接让数组元素来引用对象。但是要记住软引用的不确定性,可能会自动被回收。

  • 相关阅读:
    食物链(带权&种类并查集)
    抓屏工具 faststone capture
    ViewerJS 一个在浏览器上查看 PDF 和电子表格的 JavaScript 库
    html中调用本地exe应用程序
    html+css构成的框架,可自行改造
    普通人每天应该睡多长时间??
    利用PDF.JS插件解决了本地pdf文件在线浏览问题(根据需要隐藏下载功能,只保留打印功能)
    解决在IE11浏览器上,css样式不起作用的问题
    Dreamweaver cs6 的安装与破解
    博客生活第一天
  • 原文地址:https://www.cnblogs.com/pangblog/p/3243808.html
Copyright © 2011-2022 走看看