美文网首页Java
java面向对象——内存模型及其垃圾内存回收

java面向对象——内存模型及其垃圾内存回收

作者: 少帅yangjie | 来源:发表于2017-11-12 22:05 被阅读12次

    栈区

    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面向对象的内存模型,相关例子及模型图!

    第一个例子:

    相关例子 内存模型

    第二个例子:

    相关例子 内存模型

    第三个例子:

    相关例子 内存模型

    相关文章

      网友评论

        本文标题:java面向对象——内存模型及其垃圾内存回收

        本文链接:https://www.haomeiwen.com/subject/bgwomxtx.html