简单了解Java内存管理

缪金谷 367 0

简单了解Java内存管理

栈内存

存储变量空间、方法临时执行空间的地方

栈内存从创建开始到执行完毕立即回收

堆内存

存储我们自己new出来的对象空间

对象空间没有任何引用指向的视为垃圾

通过GC进行垃圾回收

通过gc命令销毁对象

//对象
public class Person {
   public Person(){
       System.out.println("对象被创建");
   }
   //Object中的方法,为了能看到被回收的效果,重写此方法
   public void finalize(){
       System.out.print("对象被回收了");
   }
}
//执行方法
public class Test {
   public static void main(String[] args){
       Person p = new Person();
       //将之前创建的对象舍弃
       p = null;
       //调用gc方法来销毁舍弃的对象
       System.gc();
   }
}

执行结果:

对象被创建
对象被回收了

Runtime

public class Test {
   public static void main(String[] args){
       Person p = new Person();
       //获取Runtime 类
       Runtime r = Runtime.getRuntime();
       /*
       堆内存空间大小(字节型 max/1024就是kb单位)
       在计算机中,若是使用空间不大,将会自动分配部分空间为total(可用),剩余的空间将暂时关闭保留
       若是空间使用超过可用空间,将会继续在保留空间中开放一部分用于可用空间
       在可用空间中,未使用到的空间为free(空闲)
       */
       long max = r.maxMemory();//堆内存最大空间
       long total = r.totalMemory();//可用的空间
       long free = r.freeMemory();//空闲的部分
       System.out.println(max);
       System.out.println(total);
       System.out.println(free);
   }
}

方法区

存储常量、类模板、静态成员。。。有且只有一份

不会被回收



发表评论 (已有0条评论)

还木有评论哦,快来抢沙发吧~