我是靠谱客的博主 默默砖头,最近开发中收集的这篇文章主要介绍JAVA 栈(stack), 堆(heap ) ,方法区(method),觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

三者区别

栈(stack)
1.每个线程包含一个stack,stack中是基础数据类型的对象和自定义对象的引用(不是对象),而对象都存放在heap中。(注:基础数据类型包括:boolean、byte、short、char、int、long、float、double;引用类型包括:类、接口、数组)
2.每个栈的数据都是私有的。其他栈不可访问。
3.栈有3个部分:基本类型变量区、执行环境上下文、操作指令区(存放操作指令)。
堆(heap)
1.提供所有类的实例和数组对象存储区域
2.存储的全部是对象,每个对象都包含一个与之对应的class的信息。(class的目的是得到操作指令)
3.jvm只有一个堆区(heap)被所有线程共享,堆中不存放基本类型和对象引用(stack中存储),只存放对象本身
方法区(method)
1.静态区,被所有的线程共享(跟heap一样)。方法区包含所有的class和static变量。
2.运行时常量池都分配在 Java 虚拟机的方法区之中
3.方法区中存储的都是整个程序中唯一的元素

Demo

public class User{

}
public void run(){
    User users = new User();
    int a = 1;
}
注释:

1.users是User对象的引用所以放在栈(stack)中

2.User是自定义对象所以放在堆(heap)中
3.a 是基础数据类型,存于栈(stack)中

求批评。

目录

[TOC]来生成目录:

      • 三者区别
      • Demo
      • 目录

最后

以上就是默默砖头为你收集整理的JAVA 栈(stack), 堆(heap ) ,方法区(method)的全部内容,希望文章能够帮你解决JAVA 栈(stack), 堆(heap ) ,方法区(method)所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(41)

评论列表共有 0 条评论

立即
投稿
返回
顶部