zoukankan      html  css  js  c++  java
  • Java优化编程内存管理

    转自:华军资讯http://news.newhua.com

        众所周知,java的JVM有一套自己的垃圾回收机制。因此在许多情况下并不需要java程序开发人员操太多的心。然而也许也因为这样,往往会造成java程序员的过分依赖而致使开发出来的程序得不到很好的优化,或者说性能尚能提高。

        问题的关键在于,不论JVM的垃圾回收机制做得多好,计算机的硬件资源是有限的。内存更是一项紧张资源。因此虽然JVM为我们完成了大部分的垃圾回收。但适当地注意编码过程中的内存管理还是很必要的。这样能让JVM回收得更顺利更高效。最大限度地提高程序的效率。

        1:避免在循环体内创建对象。

        Object obj = null;//方式一

        for(int i =0; i 91k(1984k),0.0027537 secs]

        ……

        可以看到总共有1984kb的内存被回收,耗时0.0027537秒。

        JVM内存相关的参数

        -XX:NewSize(Set the Newgeneralnation heap size)

        -XX:MaxNewSize(Set the Maximum Newgeneralnation heap size)

        -XX:SurvivorRatio(Set New heap size ratios)

        -Xms(Set minimum heap size)

        -Xmx(Set maximum heap size)

        -Xnoclassgc(取消垃圾回收)

        -Xss(设置栈内存的大小)

        例:java -XX:NewSize = 128m -XX:MaxNewSize = 128m - XX:SurvivorRatio = 8 -Xms 512m -Xmx 512m MyApplication

        2:不同编译方法的类大小

        (1)默认编译方式:javac K.java

        长度=代码+源文件信息+代码行序号表

        (2)调试编译方式:javac -g K.java

        长度=代码+源文件信息+代码行序号表+本地变量表

        (3)代码编译方式:javax -g:none K.java

        长度=代码

        3:经验之谈

        1.尽早释放无用对象的引用(XX = null; )

        2.尽量少使用finalize函数。

        3.注意集合数据类型,如数组,树,图,链表等数据结构,这些数据结构对GC来说回收更复杂。

        4.避免在类的默认构造器中创建大量的,初始化大量的对象。

        5.避免强制系统做垃圾内存回收。

        6.避免显式申请数组空间,不得不显式申请时,尽量准确估计其合理值。

  • 相关阅读:
    js中return的作用及用法
    js数组、字符串常用方法
    关于Ajax知识点小节
    关于跨域,同源策略小节
    Javascript模块化编程(三):require.js的用法【转】
    Javascript模块化编程(二):AMD规范【转】
    Javascript模块化编程(一):模块的写法【转】
    AJAX——核心XMLHttpRequest对象
    clientX,screenX,pageX,offsetX的异同 【转载】
    原生js获取鼠标坐标方法全面讲解:clientX/Y,pageX/Y,offsetX/Y,layerX/Y,screenX/Y【转】
  • 原文地址:https://www.cnblogs.com/wen12128/p/1989052.html
Copyright © 2011-2022 走看看