java面向对象——内存模型及其垃圾内存回收
2017-11-12 本文已影响12人
少帅yangjie
栈区
1. 每个线程包含一个栈区,栈中只保存基础数据类型的变量和自定义对象的引用(不是对象本身),对象都存放在堆区中。
2. 每个栈中的数据(原始类型和对象引用)都是私有的,其他栈不能访问。
3. 栈分为3个部分:基本类型变量区、执行环境上下文、操作指令区(存放操作指令)。
堆区
1. 存储的全部是对象,每个对象都包含一个与之对应的class的信息(class的目的是得到操作指令)。
2. JVM只有一个堆区(heap),且被所有线程共享,堆中不存放基本类型和对象引用,只存放对象本身。
方法区
1.又叫静态区,跟堆一样,被所有的线程共享。方法区包含所有的class和static变量。
2.方法区中包含的都是在整个程序中永远唯一的元素,如class,static变量,常量池等。
Java垃圾回收概况:
Java GC(Garbage Collection,垃圾收集,垃圾回收)机制,是Java与C++/C的主要区别之一,作为Java开发者,一般不需要专门编写内存回收和垃圾清理代 码,对内存泄露和溢出的问题,也不需要像C程序员那样战战兢兢。这是因为在Java虚拟机中,存在自动内存管理和垃圾清扫机制。概括地说,该机制对 JVM(Java Virtual Machine)中的内存进行标记,并确定哪些内存需要回收,根据一定的回收策略,自动的回收内存,永不停息(Nerver Stop)的保证JVM中的内存空间,防止出现内存泄露和溢出问题。
java面向对象的内存模型,相关例子及模型图!
第一个例子:
相关例子 内存模型第二个例子:
相关例子 内存模型第三个例子:
相关例子 内存模型