zoukankan      html  css  js  c++  java
  • java虚拟机 jvm java堆 方法区 java栈

    java堆是java应用程序最密切的内存空间。

    差点儿全部的对象都存在堆中。java堆全然自己主动化管理,通过垃圾回收机制,垃圾对象会自己主动清理。不须要显式释放。

    依据java垃圾回收机制的不同。java堆可能有不同的结构。

    最常见的是将整个java堆分为新生代和老年代。跟人类几乎相同了。老龄化就有可能找上帝去了,新生代存放新对象或者年龄不大的对象,老年代存放老年对象。新生代有可能分为eden区、s0区和s1区,s0区和s1区也被称之为 from to区域。他们是两块大小相等能够互换的内存空间例如以下图所看到的:

     

    在大多数情况下。对象首先被分配在eden区,再一次新生代回收后,假设对象还存在,则会进入s0或者s1,之后没经过一个新生代回收,年龄+1.当对象年龄达到一定条件后,就会老龄化进入老年代。

    以下一个简单的实例展示java堆、java方法区、java栈之间的关系。代码例如以下:

    package cn.xhgg.test;
    public class HeapTest {
    private int id;
    public HeapTest(int id) {
    this.id = id;
    }
    public void show() {
    System.out.println("id:  "+id);
    }
    public static void main(String[] args) {
    HeapTest h1 = new HeapTest(1);
    HeapTest h2 = new HeapTest(3);
    h1.show();
    h2.show();
    }
    }


    HeapTest 实例引用类型肯定分配在堆中、h1h2局部变量存放在java栈中、并指向堆中的两个实例。

    例如以下图所看到的:



  • 相关阅读:
    响应式的WEB设计
    WPF的抽奖程序
    使用Visual Studio 利用WinGDB编译和远程调试嵌入式Linux的程序
    Sqler 工具帮你解决(更新部分监控)
    YSlow相关规则的调优工具和方法
    wcf基础笔记
    HTTP协议之状态码详解
    网站首页图片滚动显示
    CodeLove初版发布
    HDFS学习– Namenode and Datanode
  • 原文地址:https://www.cnblogs.com/tlnshuju/p/7396780.html
Copyright © 2011-2022 走看看