
堆的核心特点:线程共享,存储对象实例堆(Heap)是JVM中所有线程共享的一个内存区域。与每个线程独享的栈不同,堆中存储的是所有对象实例的数据。无论是new Cat()还是new String(),只要是通过构造器创建的对象,其实例数据都会存放在堆中。堆的这种共享特性带来两个重要影响:线程间相互影响:如果一个线程发生内存泄漏,持续在堆中创建对象而不释放,最终会使整个堆空间耗尽,其他线程也会因此抛出OutOfMemoryError。问题定位困难:OutOfMemoryError通常由第一个尝试在堆中分配对象但空间不足的线程抛出,而这个线程往往不是泄漏的制造者。对象分配过程:new关键字与堆内存当在代码中执行new ClassName()时,JVM会做两件事:在堆中分配一块连续内存,用于存储对象实例(包括其成员变量)。将该对象的引用(内存地址)返回给调用方,通常存放在某个栈帧的局部变量表中。例如以下简单的Cat类:publicclassCat{privateStringname