首页 > 试题广场 >

以下哪个不属于JVM堆内存中的区域()?

[单选题]
针对jdk1.7,以下哪个不属于JVM堆内存中的区域()?
  • survivor区
  • 常量池
  • eden区
  • old区
1.5-1.7都在heap中,在1.7移了位置到young gen,1.5在perm gen。 In JDK 7, interned strings are no longer allocated in the permanent generation of the Java heap, but are instead allocated in the main part of the Java heap (known as the young and old generations), along with the other objects created by the application. This change will result in more data residing in the main Java heap, and less data in the permanent generation, and thus may require heap sizes to be adjusted. Most applications will see only relatively small differences in heap usage due to this change, but larger applications that load many classes or make heavy use of the String.intern() method will see more significant differences. RFE: 6962931 但是在1.8用本地可用内存来存放常量池 http://blog.csdn.net/zhyhang/article/details/17246223/
发表于 2018-03-09 07:57:10 回复(0)
更多回答
jvm堆分为:新生代(一般是一个Eden区,两个Survivor区),老年代(old区)。
常量池属于 PermGen(方法区)

编辑于 2017-08-18 15:56:08 回复(10)
java7,字符串常量池从方法区移到堆中。java8 整个常量池从方法区中移除。方法区使用元空间(MetaSpace)实现
发表于 2017-09-21 16:02:24 回复(6)
堆可以分为两部分:新生代,老年代。
新生代:1/3的堆空间 老年代:2/3的堆空间
而新生代可以细分:8/10的Eden区。2/10的Survivor区
Suivivor又可以细分为From区和To区,各占一半。

注意:
1.永久代MetaData在jdk1.8之前属于堆,现在属于物理内存,与堆完全隔开了
2.方法区只是逻辑概念,MetaData永久代和元空间是实实在在存在的,不能混为一体,元空间是方法区的具体实现。


编辑于 2018-12-26 10:11:07 回复(6)
选B
堆中的内存可以为了新生代和老年代,新生代由可以分为一个Survivor和两个Eden(From,To),默认比例8:1:1。
其实这个题有问题,从JDK7开始,常量池就从方法区中被移了到了堆(Hotspot叫做永久代),JDK8的时候,永久代被元空间代替。但是这个字符串常量池可是一直都在堆中的。
这里先说一下,方法区和永久代只是针对于HotSpot而言,在JDK7之前是一个概念,对于别的虚拟机而言,可没有什么永久代,只有方法区。
为什么HotSpot把永久代取消了呢,主要是因为这块地方的GC机制和堆邦定在一起,但是因为它不是堆,所以每一个GC收集器都需要有很大一部分代码去专门实现这个区域的垃圾,其次,每次一开始为永久代分配内存的时候,因为无法估量对象的大小,所以总是很难分配合适的内存,还容易出现OOM,所以取代成了元空间。元空间的话相当于一个内地内存,所以基本不会出现什么OOM,但是内存泄漏还是有的。
发表于 2018-07-24 10:48:38 回复(2)
《Something Just Like This》,网上关于这首歌有一个热评: 你背单词时,阿拉斯加的鳕鱼正跃出水面; 你算数学时,太平洋彼岸的海鸥振翅掠过城市上空; 你晚自习时,极图中的夜空散漫了五彩斑斓。 但是少年你别着急,在你为自己未来踏踏实实地努力时,那些你感觉从来不会看到的景色,那些你觉得终身不会遇到的人,正一步步向你走来。
发表于 2018-11-23 01:16:46 回复(6)
堆:新生代,老年代,默认大小比 1:2;
新生代:一个Eden区+两个Survivor区,默认大小比8:1:1
比例可以自行设置。
编辑于 2019-08-13 17:12:11 回复(0)
  1. java7之前,方法区位于永久代(PermGen),永久代和堆相互隔离,永久代的大小在启动JVM时可以设置一个固定值,不可变
  2. java7中,static变量从永久代移到堆中
  3. java8中,取消永久代,方法存放于元空间(Metaspace),元空间仍然与堆不相连,但与堆共享物理内存,逻辑上可认为在堆中
发表于 2019-02-12 10:45:08 回复(0)
Java堆内存是这样划分的:

发表于 2020-10-17 15:42:53 回复(0)
JDK7
发表于 2017-12-04 17:02:36 回复(0)
个人觉得这个题有点老了,因为在jdk9以后,常量池就分配在堆空间中了
发表于 2020-07-13 22:04:31 回复(0)
jvm堆分为:
新生代(一般是一个Eden区,两个Survivor区 from to)
老年代(old区)。

而常量池属于 PermGen(方法区)
发表于 2019-09-16 18:57:25 回复(0)
JVM内存分为堆内存和非堆内存,而堆内存分为新生代和老年代,非堆内存就一个永久代,新生代包含一个eden区和两个survivor区(fromspace,tospace)
编辑于 2019-04-01 13:22:27 回复(0)
Java8出现变化,题目需要加上Java版本
发表于 2017-10-12 00:35:53 回复(0)
常量池属于方法区
发表于 2021-09-05 21:25:48 回复(0)

发表于 2020-05-04 14:09:45 回复(0)
内存分为新生代 (2Eden区  1survivor区) 老年代  (old)  和方法区(含有常量池)
发表于 2019-07-19 22:48:16 回复(0)

JVM堆内存主要分为三个部分:

  1. Eden区:这是对象最初被创建的地方。
  2. Survivor区(包括From Survivor区和To Survivor区):这是用于存储在Eden区和From Survivor区之间进行垃圾回收后幸存的对象。
  3. Old区(也称为Tenured区):这是存储生命周期较长的对象的地方。

常量池是一块特殊的内存区域,用于存放编译期生成的各种字面量和符号引用。它不是堆内存的一部分,而是方法区的一部分。(本回答来自GTP,仅供各位参考)

发表于 2023-11-04 23:01:40 回复(0)
在JDK 1.7中,JVM堆内存主要分为三个区域:新生代、老年代和永久代。 1.新生代(Young Generation):新生代分为Eden区和两个Survivor区,其中一个Survivor区称为From区,另一个称为To区。当一个对象被创建时,它首先被分配到Eden区,如果Eden区满了,那么这些对象会被移到其中一个Survivor区,当这个Survivor区满了,里面的对象会被移动到另一个Survivor区或者老年代,这个过程称为Minor GC。 2.老年代(Old Generation):老年代主要存放长生命周期的对象,当新生代中的对象经过多次Minor GC之后仍然存活,那么它们就会被移到老年代中。老年代的大小比新生代大很多,因为长生命周期的对象会越来越多,而且老年代中的对象不容易被回收,所以老年代的垃圾回收时间比较长,一般称为Full GC。 3.永久代(Permanent Generation):永久代主要存放的是JVM加载的类信息、常量、静态变量等数据。在JDK 1.7中,永久代的大小是固定的,如果加载的类信息、常量、静态变量等数据过多,就容易导致永久代溢出,这个问题在JDK 1.8中被解决,JDK 1.8中使用元数据区代替了永久代。 总的来说,JVM堆内存中的区域主要是为了优化垃圾回收的效率,因为新生代中的对象生命周期较短,所以采用不同的垃圾回收算法;老年代中的对象生命周期较长,采用不同的垃圾回收算法可以提高效率;而永久代主要存放的是JVM加载的类信息、常量、静态变量等数据,因此在JDK 1.8中被替换成了元数据区。
发表于 2023-04-11 11:06:02 回复(1)
看过一篇帖子:
java7中,常量池位于方法区,方法区是一块堆外内存。
java8及以后,常量池从方法区移除,方法区被改为元空间;在逻辑上常量池属于方法区,实际上常量池(运行时常量池和字符串常量池)位于堆区。
不知道这个对不对。
发表于 2022-08-15 14:08:02 回复(0)
这里的常量池应该指的是运行时常量池吧  1.7中 运行时常量池在方法区中  方法区不属于JVM堆内存  并且1.7中将字符串常量池和静态变量移入堆内存中
发表于 2022-05-09 09:46:46 回复(1)