JVM内存模型

答案

JVM中的内存,可以划分为3个部分:堆、栈、方法区

  1. 栈解决程序的运行问题,即程序如何执行,或者说如何处理数据;堆解决的是数据存储的问题,即数据怎么放、放在哪儿。

  2. 在java中一个线程运行就会相应有一个线程栈与之对应。栈因为是运行单位,因此里面存储的信息都是跟当前线程相关的信息。每个栈又可以分为多个栈帧,一个栈帧对应着一次方法调用,其中包含了局部变量表、操作数栈、方法返回地址等。

  3. 堆负责存储对象信息,其中的对象理论上是所有线程都可以访问到的;而栈中声明的局部变量是线程内私有的,只有线程自己可以使用。

  4. 方法区存储的是元数据,包括类对象、方法执行指令、静态变量、常量池等。当调用方法时,会到这个区域读取方法相关的信息;当创建对象时,会到这个区域读取类的信息,根据这些信息在堆分配空间。


results matching ""

    No results matching ""