1.方法区 类的全限定名、直接超类的全限定名、该类是类或者接口、访问修饰符、直接超接口全限定名; 运行时常量池、字段、方法、静态变量、到类装载器的引用、到类class的引用2.栈内存 局部变量区、操作数栈、帧数据区3.堆内存 存放由new创建的对象和数组*栈内存和堆内存 栈存取速度比堆快,仅次于寄存...
                            
                            
                                分类:
编程语言   时间:
2014-05-26 01:08:23   
                                阅读次数:
329
                             
                    
                        
                            
                            
                                Flyweight在拳击比赛中指最轻量级,即“蝇量级”或“雨量级”,这里选择使用“享元模式”的意译,是因为这样更能反映模式的用意。享元模式是对象的结构模式。享元模式以共享的方式高效地支持大量的细粒度对象。
Java中的String类型
  在JAVA语言中,String类型就是使用了享元模式。String对象是final类型,对象一旦创建就不可改变。在JAVA中字符串常量都是存在常量池中的...
                            
                            
                                分类:
其他好文   时间:
2014-05-25 22:27:25   
                                阅读次数:
317
                             
                    
                        
                            
                            
                                编写Test.java,编译完后生成Test.class文件,然后对该文件执行javap -c Test命令,生成字节码指令,阅读并得出结论
一、s1和s2指向常量池的不同常量
①java代码
public class Test {
    public static void main(String[] args) throws IOException {
        ...
                            
                            
                                分类:
编程语言   时间:
2014-05-22 17:02:59   
                                阅读次数:
434
                             
                    
                        
                            
                            
                                Java内存分配:1. 寄存器:我们在程序中无法控制 2. 
栈:存放基本类型的数据和对象的引用,但对象本身不存放在栈中,而是存放在堆中 3. 堆:存放用new产生的数据 4. 
静态域:存放在对象中用static定义的静态成员 5. 常量池:存放常量 6. 非RAM存储:硬盘等永久存储空间 -----...
                            
                            
                                分类:
其他好文   时间:
2014-05-19 23:44:20   
                                阅读次数:
446
                             
                    
                        
                            
                            
                                在jvm规范中,每个类型都有自己的常量池。常量池是某类型所用常量的一个有序集合,包括直接常量(基本类型,String)和对其他类型、字段、方法的符号引用。之所以是符号引用而不是像c语言那样,编译时直接指定其他类型,是因为java是动态绑定的,只有在运行时根据某些规则才能确定具体依赖的类型实例,这正是...
                            
                            
                                分类:
其他好文   时间:
2014-05-18 21:29:25   
                                阅读次数:
423
                             
                    
                        
                            
                            
                                1、针对对象的操作码实例化一个新对象需要通过new操作码来实现。对象的创建操作码操作数说明newindex在堆中创建一个新的对象,将其引用压入栈new操作码后面紧跟一个无符号16位数,表示常量池中的一个索引。在特定偏移量位置处的常量池入口给出了新对象所属类的信息。如果还没有这些信息,那么虚拟机会解析...
                            
                            
                                分类:
编程语言   时间:
2014-05-15 02:03:49   
                                阅读次数:
441
                             
                    
                        
                            
                            
                                今天看到看到一篇文章中,写了关于java中的String的文章。我看了后,是我从学java来觉得是最好的一篇关于String类的文章。看了这篇文章你就会对String的认识会提高一个层次。故将原作者的文章特意转载过来分享下。
作者: chenssy 
出处: http://cmsblogs.com/?p=863 
   今天朋友问我String的内容是真的不可变吗?我肯定...
                            
                            
                                分类:
编程语言   时间:
2014-05-02 20:59:13   
                                阅读次数:
389
                             
                    
                        
                            
                            
                                一、java虚拟机内存原型寄存器:我们在程序中无法控制。栈:存放基本类型的数据和对象的引用,但对象本身不存放在栈中,而是存放在堆中堆:存放用new产生的数据静态域:存放在对象中用static定义的静态成员常量池:存放常量非RAM存储:硬盘等永久存储空间。二、常量池(constant 
pool) 常....
                            
                            
                                分类:
编程语言   时间:
2014-05-01 06:54:37   
                                阅读次数:
390
                             
                    
                        
                            
                            
                                字符串是一个特殊的对象。字符串一旦初始化就不可以被改变。String s = 
"abc";//存放于字符串常量池,产生1个对象String s1=new 
String("abc");//堆内存中new创建了一个String对象,产生2个对象String类中的equals比较字符串中的内容。常用方法:...
                            
                            
                                分类:
编程语言   时间:
2014-04-28 10:25:15   
                                阅读次数:
800
                             
                    
                        
                            
                            
                                java的String是不可变类。为了提高效率,java为String类提供了String池。
当我们使用形如String s="abc"的代码为字符串赋值时,JVM首先会检查字符串常量池中是否有"abc"这个字符串,如果有就直接将其地址赋给s;若没有,则在Stirng池中创建一个字符串对象“abc”,再将其地址赋给s。...
                            
                            
                                分类:
编程语言   时间:
2014-04-27 22:48:10   
                                阅读次数:
486