zoukankan      html  css  js  c++  java
  • 堆栈、堆、方法区介绍

    堆栈、堆、方法区介绍

    预备知识
    java数据类型:

    基础数据类型:boolean、byte、short、char、int、long、float、double

    引用数据类型:类、接口、数组

    堆栈、堆、方法区
    JAVA的JVM的内存可分为3个区:堆(heap)、堆栈(stack)和方法区(method)

    堆区:

    提供所有类实例和数组对象存储区域

    jvm只有一个堆区(heap)被所有线程共享,堆中不存放基本类型和对象引用,只存放对象本身

    栈区:

    每个线程包含一个栈区,栈中只保存基础数据类型的对象和自定义对象的引用(不是对象),对象都存放在堆区中

    每个栈中的数据(原始类型和对象引用)都是私有的,其他栈不能访问。

    方法区:

    又叫静态区,跟堆一样,被所有的线程共享。方法区包含所有的class和static变量。

    方法区中包含的都是在整个程序中永远唯一的元素,如class,static变量。

    运行时常量池都分配在 Java 虚拟机的方法区之中

    栗子

    public void test(){
    A a = new A();
    int b = 1;
    }
    
    public class A{
    
    }


    这个栗子中

    a是A对象的引用所以放在栈中,A是自定义对象所以放在堆中.

    b是基础数据类型所以在栈中.

    A是自定义对象所以放在堆中"应该是new A()

    小结
    这里用一个在别处看到的栗子总结再好不过

    堆和栈的区别可以用如下的比喻来看出:

    使用栈就象我们去饭馆里吃饭,只管点菜(发出申请)、付钱、和吃(使用),吃饱了就
    走,不必理会切菜、洗菜等准备工作和洗碗、刷锅等扫尾工作,他的好处是快捷,但是自
    由度小。

  • 相关阅读:
    vue异步组件
    vue-awesome-swiper的使用
    自定义button组件时slot的使用
    axios拦截器的简单使用
    vue静态类名和动态类名绑定的几种方式
    快速知道所有元素的边框
    【转】CICD工具
    mocha学习(四)为项目开发一个BDD测试
    mocha学习(三)hook 机制 和 测试技巧
    mocha学习(二)mocha接口
  • 原文地址:https://www.cnblogs.com/qqfff/p/13055927.html
Copyright © 2011-2022 走看看