java支持两种常见的方法创建字符串Strings1=newString("abc");
Strings2="abc";两种方法都有什么区别呢内存图如下1,S1首先查看字符串abc是否存在字符串常量池中,如果存在则直接指向,不存在,则创建一个2,S2查看常量池中abc是否存在,结果已经存在了,就直接指向引用了区别..
分类:
编程语言 时间:
2015-12-30 00:41:45
阅读次数:
247
文章目录1.Java内存区域与内存溢出异常1.1.运行时数据区域1.1.1.程序计数器1.1.2.java虚拟机栈1.1.3.本地方法栈1.1.4.Java堆(Java Heap)1.1.5.方法区1.1.6.运行时常量池1.1.7.直接内存1.2.HotSpot虚拟机1.2.1.对象的创建1.2....
分类:
其他好文 时间:
2015-12-27 17:36:59
阅读次数:
154
当Java编译器编译好.class文件之后,我们需要使用JVM来运行这个class文件。那么最开始的工作就是要把字节码从磁盘输入到内存中,这个过程我们叫做【加载 】。加载完成之后,我们就可以进行一系列的运行前准备工作了,比如: 为类静态变量开辟空间,将常量池存放在方法区内存中并实现常量池地址解析,初...
分类:
其他好文 时间:
2015-12-23 12:34:25
阅读次数:
151
(一)、栈、堆1.寄存器:最快的存储区, 由编译器根据需求进行分配,我们在程序中无法控制.2. 栈:存放基本类型的变量数据和对象的引用,但对象本身不存放在栈中,而是存放在堆(new 出来的对象)或者常量池中(字符串常量对象存放在常量池中。)3. 堆:存放所有new出来的对象。4.静态域(属于方法区)...
分类:
编程语言 时间:
2015-12-22 23:07:32
阅读次数:
474
1、举例说明 变量 常量 字面量1 int a=10;2 float b=1.234f;3 String c="abc";4 final long d=10L;a,b,c为变量,d为常量 两者都是左值;10,1.234f,"abc",10L都是字面量;2、常量池:常量池专门用来用来存放常量的内存区域...
分类:
编程语言 时间:
2015-12-15 00:59:26
阅读次数:
268
转帖infoQ在Java虚拟机(以下简称JVM)中,类包含其对应的元数据,比如类的层级信息,方法数据和方法信息(如字节码,栈和变量大小),运行时常量池,已确定的符号引用和虚方法表。在过去(当自定义类加载器使用不普遍的时候),类几乎是“静态的”并且很少被卸载和回收,因此类也可以被看成“永久的”。另外由...
分类:
编程语言 时间:
2015-12-10 13:31:35
阅读次数:
217
在Java虚拟机(以下简称JVM)中,类包含其对应的元数据,比如类的层级信息,方法数据和方法信息(如字节码,栈和变量大小),运行时常量池,已确定的符号引用和虚方法表。在过去(当自定义类加载器使用不普遍的时候),类几乎是“静态的”并且很少被卸载和回收,因此类也可以被看成“永久的”。另外由于类作为JVM...
分类:
编程语言 时间:
2015-11-27 23:29:20
阅读次数:
145
在Java应用程序运行时,Java虚拟机会保存一份内部的运行时常量池,它区别于class文件的常量池,是class文件常量池映射到虚拟机中的数据结构。1.CONSTANT_Class入口解析数组类的符号解析较为特殊。若是基本类型数组,那么虚拟机将创建该基本类型的新数组类,并创建一个Class实例来代...
分类:
编程语言 时间:
2015-11-25 15:14:46
阅读次数:
176
参考资料:http://blog.csdn.net/miraclestar/article/details/60397431. 寄存器:最快的存储区, 由编译器根据需求进行分配,我们在程序中无法控制.2. 栈:存放基本类型的变量数据和对象的引用,但对象本身不存放在栈中,而是存放在堆(new 出来的对...
分类:
编程语言 时间:
2015-11-19 20:44:26
阅读次数:
172