gpt4 book ai didi

java - 类区和堆的区别

转载 作者:搜寻专家 更新时间:2023-10-31 08:11:00 24 4
gpt4 key购买 nike

JVM 在内存中分配这些区域:Class(Method) Area, Heap, Stack, Program counter Register, Native method stack.

我知道堆是用来存放对象的,栈是用来存放局部变量和部分结果的。根据定义,Class(Method) Area 存储每个类的结构,例如运行时常量池、字段和方法数据、方法代码。但我真的不明白其中的区别。

谁能解释一下类区和堆区的区别?

最佳答案

Java 6在Perm Gen中存储了所有的常量池和Class信息

Java 7只在Perm Gen中保存类信息,String文字池在堆上。

Java 8 没有 Perm Gen。文字池和类信息都在堆上。

你已经解释了区别。像方法这样的类结构存储在 perm gen 中。每个实例中的数据存储在堆中。

它们是分开的,因为这些类型的数据具有非常不同的生命周期,例如对象的生命周期通常很短,而类的生命周期通常很长。

AFAIK 他们正在删除它,因为太多开发人员发现它令人困惑。

关于java - 类区和堆的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19340013/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com