java吧 关注:1,183,180贴子:12,582,556

字符串常量池到底是在堆还是在栈?

只看楼主收藏回复

为什么百度出来的答案层次不齐



IP属地:广东1楼2022-05-17 11:05回复


    IP属地:广东2楼2022-05-17 11:11
    回复
      不同的jvm版本设计不一样的,1.7后在堆


      IP属地:广东来自Android客户端3楼2022-05-17 11:29
      收起回复
        版本不同,面试的时候被问到要说清楚


        IP属地:安徽4楼2022-05-17 11:46
        回复
          字符串常量池 jdk1.7 之前是放在方法区中的,jdk1.7之后就把字符串常量池移到了堆空间。这是 JVM 相关的内容,建议系统的看一看 JVM,看完之后栈、堆、方法区都是用来干啥的,以及 String 的底层原理就清楚了。


          IP属地:北京5楼2022-05-17 12:33
          回复
            在堆啊,栈的话出栈不就没了


            IP属地:北京来自Android客户端6楼2022-05-17 12:43
            回复


              IP属地:江苏来自iPhone客户端7楼2022-05-17 14:18
              回复
                在哪里其实对写代码影响不大,所以管他在哪呢


                IP属地:江西8楼2022-05-17 15:10
                回复
                  1.7之前在方法区,只不过是永久代,永久代也是堆的一部分。1.7方法区是元空间,常量池都保存到了堆中,方法区只有元信息


                  IP属地:陕西来自iPhone客户端9楼2022-05-17 15:35
                  回复
                    看版本,6之前在方法区,7以及以后在堆,好像没听过在栈里的


                    IP属地:广东来自Android客户端10楼2022-05-17 16:16
                    收起回复
                      首先不可能在栈里,栈空间十分滴珍贵。1.6在方法区中,其实方法区也在堆里。1.7移到堆里单独存放,类变量也在堆里。


                      IP属地:江苏来自Android客户端11楼2022-05-17 17:53
                      收起回复
                        栈,内存只有堆栈,其他都是抽象概念


                        IP属地:四川来自Android客户端12楼2022-05-17 18:22
                        收起回复
                          一直在堆


                          IP属地:广东来自Android客户端14楼2022-05-17 19:59
                          回复
                            常量不是在堆里么


                            IP属地:江苏来自Android客户端15楼2022-05-17 20:57
                            收起回复