美文网首页
个人Java编码小技巧

个人Java编码小技巧

作者: atdoking | 来源:发表于2019-12-26 22:04 被阅读0次

    1、如果两个字符串在一个循环中使用+操作符进行拼接,那么每次循环都会产生一个新的字符串对象。这不仅浪费内存空间同时还会影响性能。

    如果初始化字符串对象,尽量不要使用构造方法,而应该直接初始化,比如:

    //比较慢的初始化
    String bad = new String("Hello World!");
    //比较快速的初始化
    String good = "Hello World!"
    

    2、Java编程中创建一个对象的花费是很大的,因此最好在有需要的时候再进行对象的创建或初始化

    public class Employees
    {
        private List Employees;
        public List getEmployees()
        {
            //当有需要的时候再初始化
            if(null == Employees)
            {
                Employees = new ArrayList();
            }
            return Employees;
        }
     
    }
    

    3、数组和ArrayList的区分

    数组是定长的,而ArrayList是变长的。由于数组长度是固定的,因此在生命数组时就已经分配好内存了。而数组的操作则会更快一些。另一方面,如果不知道数据的大小,那么过多的数据便会导致ArrayOutofBoundException,而少了又会浪费存储空间
    ArrayList在增删元素方面比数组简单
    数组可以是多维的,但ArrayList只能是一维的。、
    try块的finally块没有被执行
    System.exit会挂起所有县城的执行,包括当前县城。即便是try语句后的finally块,只要是执行了exit,就不会再执行
    在调用System.exit时,JVM会在关闭前执行两个结束任务:
    首先,它会执行完所有通过Runtime.addShutdownHook注册进来的终止的钩子程序。这一点很关键,因为它会释放JVM外部的资源。

    接下来的便是Finalizer了。可能是System.runFinalizersOnExit也可能是

    Runtime.runFinalizersOnExit。finalizer的使用已经被废弃有很长一段时间了。finalizer可以在存活对象上进行调用,即便是这些对象仍在被其它线程所使用。而这会导致不可预期的结果甚至是死锁。

    4、内存泄露会导致软件的性能降级。由于Java是自动管理内存的,因此开发人员并没有太多办法介入。不过还是有一些方法能够用来防止内存泄露的。

    查询完数据后立即释放数据库连接
    尽可能使用finally块
    释放静态变量中的实例
    5、某些Java程序是CPU密集型的,但它们会需要大量的内存。这类程序通常运行得很缓慢,因为它们对内存的需求很大。为了能提升这类应用的性能,可得给它们多留点内存。因此,假设我们有一台拥有10G内存的Tomcat服务器。在这台机器上,我们可以用如下的这条命令来分配内存:

    export JAVA_OPTS="$JAVA_OPTS -Xms5000m -Xmx6000m -XX:PermSize=1024m -XX:MaxPermSize=2048m"
    
    Xms = 最小内存分配
    Xmx = 最大内存分配
    XX:PermSize = JVM启动时的初始大小
    XX:MaxPermSize = JVM启动后可分配的最大空间
    

    相关文章

      网友评论

          本文标题:个人Java编码小技巧

          本文链接:https://www.haomeiwen.com/subject/cyzloctx.html