象牙塔的案例和资讯已经很多年没有更新了,实在没有精力更新,需要最新案例请联系客服!
--- 我们没有销售只有技术,不善于也不需要宣传,服务好已有客户足以!---
Java虚拟机堆栈
编辑:象牙塔 技术部  |  点击率:1878次

   栈位于通用RAM中,但通过它的“堆栈指针”可以从处理器哪里获得支持。堆栈指针若向下移动,则分配新的内存;若向上移动,则释放那些内存。存储读取速度,仅次于寄存器。存放基本类型数据变量和对象、数组等引用类型的引用。

      4.Java堆
5fe3d114-83b1-4915-b2dc-75977c746cae.jpg
  是Java虚拟机所管理的内存中最大的一块。由所有线程共享,在虚拟机启动时创建。堆区唯一目的就是存放对象实例。
  堆中可细分为新生代和老年代,再细分可分为Eden空间、From Survivor空间、To Survivor空间。
  堆无法扩展时,抛出OutOfMemoryError异常
  5.方法区
  所有线程共享,存储已被虚拟机加载的类信息、常量、静态变量、即时编译器编译后的代码等数据。
  当方法区无法满足内存分配需求时,抛出OutOfMemoryError
  6.运行时常量池
  它是方法区的一部分,Class文件中除了有类的版本、字段、方法、接口等描述信息外,还有一项是常量池(Const Pool Table),用于存放编译期生成的各种字面量和符号引用。并非预置入Class文件中常量池的内容才进入方法运行时常量池,运行期间也可能将新的常量放入池中,这种特性被开发人员利用得比较多的便是String类的intern()方法。
  当方法区无法满足内存分配需求时,抛出OutOfMemoryError
  7.直接内存
  并不是虚拟机运行时数据区的一部分,也不是Java虚拟机规范中定义的内存区域。
  JDK1.4加入了NIO,引入一种基于通道与缓冲区的I/O方式,它可以使用Native函数库直接分配堆外内存,然后通过一个存储在Java堆中的DirectByteBuffer对象作为这块内存的引用进行操作。因为避免了在Java堆和Native堆中来回复制数据,提高了性能。
  当各个内存区域总和大于物理内存限制,抛出OutOfMemoryError异常。
  •   上一篇: Java虚拟机堆栈
  •   下一篇: Java 虚拟机总结给面试的你