java中所有的对象都在堆内存中分配空间对吗 来讨论讨论 赞同这句话的我会继续问 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 Mark~~ 字符串和字符串对象是两个概念 你这种说法好像没什么依据吧 ,按照你说的,String a = "ss",这句代码就有矛盾了,如果“”ss”不是字符串对象,那它怎么可以被String 类型引用。 String也是类,即他是一个对象,只不过他比较特殊而已。你可以不用了解它的特殊之处,只需要知道它就是个对象就行了。 字符串和字符串对象是两个概念 你这种说法好像没什么依据吧 ,按照你说的,String a = "ss",这句代码就有矛盾了,如果“”ss”不是字符串对象,那它怎么可以被String 类型引用。这当然有依据咯,你之所以产生这种疑问是因为你理解视角混乱造成的,对于java内的字符串,你不能只从java语言的语法层面去理解,你要从实际的内存结构去理解,如果只是语法层面,你只要知道String是字符串对象即可,但是你要更深入理解它在内存中的形式你就要抛弃java语法层面,从实际内存来出发了。你学过C应该知道字符串实际上就是char类型数组以一个空结尾既是字符串,其实java是一样的,因为虚拟机就是C开发的,早在1.6版本,jvm还是开源的。具体的内存结构比较复杂,你可以看虚拟机规范,也可以查阅jvm相应书籍,在java中除了字符串还有Class类以及反射相关的一系列东西都和字符串类似,如果你认为java中的类是Class的对象,那你就大错特错了 new的都是在堆中 作为一个新手程序员,但是爱瞎研究的我:在jdk7以前常量池在方法区里面,在jdk7的时候放到了永久代中,而永久代在堆中在jdk8的时候取消了永久代,改成元空间区(元数据区),而元数据区已经不再jvm上了,之前的版本都还在jvm上,而是在本地内存上,这也是jdk8之后的一个大改变吧,从此元数据区只受内存大小的限制了还有一个对象逃逸问题,如果这个对象开销小并且还没有发生逃逸现象,他会被直接分配到栈上的,所以所有对象都在堆上是不对的 如何获得Java模板类的class属性? 在eclipse中使用Arrays.asList出错 总结了一些日期时间常用的方法,做为自己的工具类很适用. 向上转型问题 生产者消费者应用实例 问个说简单不简单说难不难的问题 求教几个求解多项式的Java代码,简单. 多谢了! 是用MJ++6.0还是JBuilder,说一说理由 请问哪里有《JBuilder开发人员指南》(39章完全版)下载 sigar磁盘IO问题 Java 生成.exe时闪退 wait()、notify()、notifyAll()在使用是对象锁和调用这些方法的对像必须要一直?
你学过C应该知道字符串实际上就是char类型数组以一个空结尾既是字符串,其实java是一样的,因为虚拟机就是C开发的,早在1.6版本,jvm还是开源的。
具体的内存结构比较复杂,你可以看虚拟机规范,也可以查阅jvm相应书籍,在java中除了字符串还有Class类以及反射相关的一系列东西都和字符串类似,如果你认为java中的类是Class的对象,那你就大错特错了
在jdk7以前常量池在方法区里面,
在jdk7的时候放到了永久代中,而永久代在堆中
在jdk8的时候取消了永久代,改成元空间区(元数据区),而元数据区已经不再jvm上了,之前的版本都还在jvm上,而是在本地内存上,这也是jdk8之后的一个大改变吧,从此元数据区只受内存大小的限制了还有一个对象逃逸问题,如果这个对象开销小并且还没有发生逃逸现象,他会被直接分配到栈上的,所以所有对象都在堆上是不对的