美文网首页
jvm的内存模型

jvm的内存模型

作者: Oneisall_81a5 | 来源:发表于2017-09-20 17:09 被阅读0次

    ①程序计数器是一块较小的内存空间,可以看作是当前线程所执行的字节码的行号指示器。分支、循环、跳转、异常处理、线程恢复等基础功能都需要依赖这个计数器来完成。

    ②通常我们定义一个基本数据类型的变量,一个对象的引用,还有就是函数调用的现场保存都使用JVM中的栈空间,栈可以被分为虚拟机栈和本地方法栈。

    ③而通过new关键字和构造器创建的对象则放在堆空间,堆是垃圾收集器管理的主要区域

    ④方法区和堆都是各个线程共享的内存区域,用于存储已经被JVM加载的类信息、常量、静态变量、JIT编译器编译后的代码等数据;

    ⑤程序中的字面量(literal)如直接书写的100、"hello"和常量都是放在常量池中,常量池是方法区的一部分。

    ⑥栈空间操作起来最快但是栈很小,通常大量的对象都是放在堆空间,栈和堆的大小都可以通过JVM的启动参数来进行调整,栈空间用光了会引发StackOverflowError,而堆和常量池空间不足则会引发OutOfMemoryError。

    存放基本类型的数据和对象的引用,但对象本身不存放在栈中,而是存放在堆中

    堆内存用来存放由new创建的对象和数组。在堆中分配的内存,由Java虚拟机的自动垃圾回收器来管理


    相关文章

      网友评论

          本文标题:jvm的内存模型

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