3个答案 按时间排序 按投票排序
-
采纳的答案
首先你说的“持久代”仅仅是HotSpot存在的一个概念,并且将其置于方法区,JRocket与IBM的VM都不存在这个“持久代”,最新的HotSpot也计划将其移除。所以你说的都对,在heap中和在Method Area中并没定论。
建议参考RednaxelaFX的一贴:http://rednaxelafx.iteye.com/blog/9052732012年2月29日 14:33
-
而且一般说堆的持久代就是说方法区,因为一旦JVM把方法区(类信息,常量池,静态字段,方法)加载进内存以后,这些内存一般是不会被回收的了。
2012年2月29日 14:39
相关推荐
在Java 8之后,方法区被进一步细分为元空间(Metaspace),以减少对持久代内存的依赖,元空间的大小同样可以通过JVM参数进行调整。 3. **Java栈区**: 每个线程都有自己的Java栈,用于存储方法调用的状态,也就是...
JVM 中的方法区也称为永久代(持久代)。在 JDK8 中,永久代被完全弃用,取而代之的是元数据区(Metaspace,元空间)。 4. 判断一个对象是否存活: 判断一个对象是否存活可以使用引用计数法和可达性分析算法两种...
上述示例设置了初始堆大小为128MB,最大堆大小为512MB,以及最大持久代大小为256MB。你可以根据你的应用需求调整这些值。 在Eclipse中设置Tomcat的JVM参数,可以按照以下步骤操作: 1. 打开Eclipse,进入"Window" -...
Full GC则涉及到整个堆空间和持久代,通常使用标记-清除算法,处理老年代的垃圾。由于老年代对象存活率高,Full GC的频率远低于Minor GC,但其执行时间较长,可能会造成应用暂停。标记-清除算法可能导致内存碎片,...
方法区,也称为元空间或非持久代,存储类的元数据,包括类的结构信息(如方法、字段)、常量池等。当类加载时,`Student`和`StudentDemo`的字节码被加载到方法区,类的成员变量和方法也随之加载。 在程序运行过程中...
对象属性存放在堆中,对象方法信息则存储在方法区中。 4. **生命周期**:栈内的数据随方法调用创建与销毁;堆内的对象生命周期取决于GC策略。 #### 三、JVM垃圾回收机制 **3.1 分代垃圾回收** 针对不同生命周期的...
Sun的JVM采用了一种称为Generational Garbage Collection的策略,将堆内存划分为年轻代(Young)、年老代(Tenured)和持久代(Perm,Java 8后取消)。年轻代又细分为Eden区和两个Survivor区。新生对象首先在Eden区...
Java虚拟机规范定义了更多内存区域,包括方法区(Method Area)、原生方法栈(Native Method Stack)和持久代(Permanent Generation)。方法区存储类的元数据,如类信息、常量、静态变量等。原生方法栈服务于JNI...
运行时数据区(方法区、堆、java栈、PC寄存器、本地方法栈) 说到GC,记住两点:1、GC是负责回收所有无任何引用对象的内存空间。 注意:垃圾回收回收的是无任何引用的对象占据的内存空间而不是对象本身,2、GC回收...
Sun HotSpot JVM实战中,堆空间被划分为年轻代、年老代和持久代。年轻代进一步分为Eden区和两个Survivor区,新生对象在Eden区创建,经过垃圾回收后存活的对象会被移动到Survivor区,最终持久的对象进入年老代。持久...
JVM内存主要分为堆(Heap)和非堆(Non-Heap)两部分,堆中又细分为年轻代(Young)、年老代(Tenured)和持久代(Perm),非堆主要包含方法区(Method Area)。下面我们将深入探讨JVM内存管理和垃圾回收机制。 **1...
- 持久代:存储类元数据,JDK1.8后被MetaSpace取代,存储在本地内存中。 三、Java对象分配 1. 对象分配过程:大多数对象在Eden区分配,当Eden空间满时,触发Minor GC,存活对象会转移到Survivor区,若Survivor空间...
持久代主要用于存储类信息、方法元数据等非堆内存。JDK8之后,持久代被元空间(Metaspace)取代。 4. 垃圾收集器选择: - **串行收集器(Serial Collector)**:适用于小型应用,单线程执行垃圾回收。 - **并行...
堆可以细分为新生代(Young Generation)、老年代(Tenured Generation)和持久代(Perm Gen,Java 8后已被元空间取代)。 5. **方法区(Method Area)** 也被称为永久代,存储类信息、常量、静态变量以及编译后的...
- **垃圾回收**:JVM使用不同算法(如标记-清除、复制、标记-整理和分代收集)进行内存管理,区分年轻代、年老代和持久代以优化回收效率。 8. **锁**: Java中有乐观锁(如CAS操作)和悲观锁(如synchronized)。...
方法区主要用于存放类信息、常量、静态变量等,它在JDK中对应的是持久代(Permanent Generation,PermGen),可以通过JVM参数-XX:PermSize和-XX:MaxPermSize来指定其最小值和最大值。由于方法区的垃圾收集并不频繁,...
它被划分为几个主要部分,包括程序计数器、虚拟机栈、本地方法栈、堆和方法区(在较旧的JVM版本中被称为永久代)。程序计数器记录当前线程正在执行的字节码指令地址;虚拟机栈存储每个线程的局部变量和方法调用信息...
Java虚拟机中的堆空间被划分为三个代:年轻代(Young Generation)、年老代(Old Generation)和持久代(Permanent Generation)。其中持久代主要存放的是Java类的类信息,与垃圾收集要收集的Java对象关系不大。年轻...
在堆内存中,年轻代是用于存储短生命周期对象的区域,老年代是用于存储长生命周期对象的区域,而持久代是用于存储类的元数据和常量池的区域。方法区是用于存储类的结构信息、字段和方法数据、方法代码和构造函数的...
3. 持久代(Perm):用于存放静态文件,如今 Java类、方法等。持久代对垃圾回收没有显著影响,但是有些应用可能动态生成或者调用一些 class,例如 Hibernate 等,在这种时候需要设置一个比较大的持久代空间来存放...