之前我们已经了解过“运行时数据区”的程序计数器、虚拟机栈、本地方法栈和堆空间,今天我们就来了解一下最后一个模块——方法区。
尽管不是所有的对象实例都能够在TLAB中成功分配内存(因为它的空间比较小),但JVM明确是将TLAB作为内存分配的首选;一旦对象在TLAB空间分配内存失败时,JVM就会尝试着通过使用加锁机制确保数据操作的原子性,从而直接在Eden空间中分配内存。
今天阿Q为大家准备了上好的“醒酒菜”——`JVM`运行时数据区的核心内存区——堆。
虚拟机栈5连问,一听心里就乐了
方法调用是不是很熟悉?那你真的了解它吗?今天就让我们来盘一下它。
相信大家在上篇文章中已经对类加载子系统有了清晰的认识,接下来就让我们来揭开“运行时数据区”的神秘面纱吧。
上篇文章中我们知道了JVM是个啥?这篇文章(通篇文章都是以HotSpot JVM为例)就让我们来了解一下类加载子系统(ClassLoader)--负责从文件系统或者网络中加载Class字节码文件,并将加载的类信息(DNA元数据模版,jvm会根据这个模版实例化出n个一模一样的实例)存放于“方法区”(接下来的文章中会做具体的介绍)中。
大家在平时的开发过程中是否遇到过`StackOverflowError`、`OutOfMemoryError`等类似的内存溢出错误呢?大家又是怎么解决这个问题的?
Copyright © 2005-2025 51CTO.COM 版权所有 京ICP证060544号