Java如何管理内存?

我试图发现Java如何管理内存。

我正在学习内存的哪个部分保存静态方法和静态变量。 他们说PermGen内存保存静态变量和静态方法,这是非堆内存的一部分(下图)。

在这里输入图像描述

但是,从我所了解到的情况来看,Java有堆栈段来存放局部变量,参数,引用,非void函数返回值等等,堆段包含对象和数组。 我已经阅读了许多关于这个主题的许多问答,并且有两种方式来解释它:

  • 分为2部分:堆和非堆内存。
  • 分为3部分:堆栈段,堆段,代码段。
  • 谁能帮助我更清楚地理解这一点。 如果内存分为两部分:堆栈在哪里? 如果内存分为3部分:哪部分包含静态方法和静态变量?

    我会很感激得到你的帮助:D谢谢。


    底线有两部分:

  • 堆栈:用于局部变量和控制程序执行
  • 堆:用于包含static变量的所有对象,包括Class类的实例。
  • 在堆栈中,对象类型变量包含对存储在堆中的对象的引用。


    堆栈用于执行线程。 它们包含特定于方法的值,这些值是短暂的,并引用堆中从该方法引用的其他对象。

    堆内存用于为对象和Java运行时环境类分配内存。

    更多

    链接地址: http://www.djcxy.com/p/82867.html

    上一篇: How does Java manager the memory?

    下一篇: Java Static vs Stack with Thread