zoukankan      html  css  js  c++  java
  • Java的内存--存储(1)

    有次去面试,面试官突然问我这个问题,当时我只知道怎么写最优化,但是具体不知道为什么那样写,身价立马下降哦

    1. 以下开发习惯,你怎么看?

      for(int i=0;i<2;i++){
    
        Person person = new Person();
    
      }

    如下图:循环一次,会在堆内存中开辟一个内存空间,并且都被栈内存变量所引用(指向),所以堆内存对象一直释放不了,极度浪费内存空间

    2. 可以这样解决

    Person person = null;
    for(int i=0;i<2;i++){
        person = new Person();
    
    }

    此处循环一次,也会在内存中new一个对象,但是栈内存中的变量永远只有一个person,所以当循环第2个时,栈内存中的变量地址会自动断开与第一个对象的连接,同时指向第二个对象,此时第一个对象没有被引用,会等待被GC回收,此处会节省很多内存空间

  • 相关阅读:
    Markdown语法
    BASH 特性和快捷键
    jstl标注标签库
    搭建以太坊私网
    spring-装配bean
    java语法糖
    centos7 安装jdk、Tomcat
    合约实战,代币合约,DAPP开发
    solidity数据类型
    solidity合约面向对象
  • 原文地址:https://www.cnblogs.com/holdon521/p/4401701.html
Copyright © 2011-2022 走看看