Java的GC一般是在JVM的堆上进行的,Java的堆中存放了大量的对象实例,所以JavaGC也叫GC堆。Java将内存区划分为:新生代(Young Generation/New) Eden Space From Survivor/Survivor 0 To Survivor/Survivor 1老年代(Tenured Generation/Old)永久代(一般指方法区和常量池,...
分类:
编程语言 时间:
2015-11-18 12:45:46
阅读次数:
203
在JVM中内存一共有3种:Heap(堆内存),Non-Heap(非堆内存)[3]和Native(本地内存)。[1]堆内存是运行时分配所有类实例和数组的一块内存区域。非堆内存包含方法区和JVM内部处理或优化所需的内存,存放有类结构(如运行时常量池、字段及方法结构,以及方法和构造函数代码)。本地内存是由...
分类:
其他好文 时间:
2015-10-23 10:14:28
阅读次数:
188
构造器是静态方法。1. Java中,用new()创建一个对象的时候,Java虚拟机首先去检查new指令的参数是否能够在方法区的常量池中定位到这个类的符号引用,并且检查这个符号引用代表的类是否被加载、解析和初始化过。如果没有,则必须执行相应的类加载过程。2. 类加载过程为:Java解释器查找类路径,以...
分类:
编程语言 时间:
2015-10-11 01:38:31
阅读次数:
169
java中的堆、栈、常量池分类:java2010-01-15 03:034248人阅读评论(5)收藏举报javastring编译器jvm存储equalsJava内存分配:1. 寄存器:我们在程序中无法控制2. 栈:存放基本类型的数据和对象的引用,但对象本身不存放在栈中,而是存放在堆中3. 堆:存放用...
分类:
编程语言 时间:
2015-10-06 11:43:00
阅读次数:
220
一:在JAVA中,有六个不同的地方可以存储数据: 1. 寄存器(register)。 这是最快的存储区,因为它位于不同于其他存储区的地方——处理器内部。但是寄存器的数量极其有限,所以寄存器由编译器根据需求进行分配。你不能直接控制,也不能在程序中感觉到寄存器存在的任何迹象。 ------最快的存储区,...
分类:
编程语言 时间:
2015-09-30 09:37:36
阅读次数:
229
java对象的创建过程: 对象的创建开始: 虚拟机遇到new 关键字的时候,首先去常量池中寻找有没有这个类的符号引用,并且检查该引用的类是否已经被加载,解析,和初始化过,如果没有则会先执行该类的加载过程, 在...
分类:
编程语言 时间:
2015-09-16 18:21:23
阅读次数:
228
Java程序性能优化之代码优化字符串部分:关于这一部分我们需要了解String StringBuffer StringBuliderString是一个不可变字符序列,针对常量池优化,类是final的String的不变性是指字符串对象一旦创建便不可改变。常量池的优化是指若两个字符串拥有相同的字符串序列...
分类:
编程语言 时间:
2015-09-08 22:04:59
阅读次数:
194
1. Java内存区的构成 Java虚拟机运行时内存主要由五个部分组成: (1)方法区 方法区用于存储被虚拟机加载的类信息、常量、static变量等数据。字符串常量池就位于方法区。 (2)堆 堆用于存储对象实例,java中通new创建的对象实例就保存在堆中。 (3)虚拟机栈 虚拟机栈用于实...
分类:
编程语言 时间:
2015-09-05 00:09:01
阅读次数:
211
一、字符串是什么1.字符串对象或其等价对象(如char数组),在内存中总是占据最大的空间快2.String和char数组 char数组 + 偏移量 + 长度 = String3.String三个基本特点不变性:一旦定义,不能改变针对常量池的优化:当两个String对象有相同的值,则只引用常量池的同....
分类:
编程语言 时间:
2015-09-04 07:14:33
阅读次数:
182
在Java中主要存在4块内存空间,这些内存空间的名称及作用如下。1. 栈内存空间: 保存所有对象名称(更准确的说是保存了引用的堆内存空间的地址)。2. 堆内存空间: 保存每个对象的具体属性内容。 堆内存中包含常量池,常量池包括直接常量(基本类型,String)和对其他类型、方法、字段的符号引用3. ...
分类:
编程语言 时间:
2015-08-29 12:37:23
阅读次数:
158