栈内存、堆内存与方法区有什么关系-创新互联

今天就跟大家聊聊有关栈内存、堆内存与方法区有什么关系,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。

创新互联建站坚持“要么做到,要么别承诺”的工作理念,服务领域包括:做网站、成都网站建设、企业官网、英文网站、手机端网站、网站推广等服务,满足客户于互联网时代的舟曲网站设计、移动媒体设计的需求,帮助企业找到有效的互联网解决方案。努力成为您成熟可靠的网络建设合作伙伴!

先看一下代码:

package cn.liang.jvm;
    public class SimpleHeap {	
            private int id;	
            public SimpleHeap(int id){		
                this.id = id;
	    }	
        public void show(){
	    System.out.println("My ID is " + id);
	}	
        public static void main(String[] args) {
		SimpleHeap s1 = new SimpleHeap(1);
		SimpleHeap s2 = new SimpleHeap(2);
		s1.show();
		s2.show();
	}
}

关系图:

栈内存、堆内存与方法区有什么关系

  • SimpleHeap实例本身分配在堆内存中

  • 描述SimpleHeap类的信息存放在方法区

  • main()函数中s1和s2局部变量存放在Java栈内存中,并指向堆内存的两个实例

堆区:

1、存储的全部是对象,每个对象都包含一个与之对应的class的信息。(class的目的是得到操作指令)

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

栈区:

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

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

3、栈分为3个部分:基本类型变量区、执行环境上下文、操作指令区(存放操作指令)。

方法区:

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

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

看完上述内容,你们对栈内存、堆内存与方法区有什么关系有进一步的了解吗?如果还想了解更多知识或者相关内容,请关注创新互联-成都网站建设公司行业资讯频道,感谢大家的支持。


新闻名称:栈内存、堆内存与方法区有什么关系-创新互联
转载来源:http://scyanting.com/article/ddjocd.html