2013年2月3日

JVM中堆和栈(转载/整理)

摘要: JVM的内存有很重要的两部分就是堆heap和栈stack(这句是废话)。 Stack(栈)是JVM的内存指令区。Stack管理很简单,push一定长度字节的数据或者指令,Stack指针压栈相应的字节位移;pop一定字节长度数据或者指令,Stack指针出栈。Stack的速度快,管理简单,并且每次操作的数据或者指令字节长度和生存期是已知的。所以Java 基本数据类型,Java 指令代码,常量都保存在Stack中。 Heap(堆)是JVM的内存数据区。Heap 的管理复杂,每次分配不定长的内存空间,专门用来保存对象的实例。在Heap 中分配一定的内存来保存对象实例,实际上也只是保存对象实例的属... 阅读全文

posted @ 2013-02-03 16:20 夜月升 阅读(639) 评论(0) 推荐(0) 编辑

JVM中的方法区(Method Area)(转载/整理)

摘要: Java在内存中专门划分出一块静态存储区域(即在固定位置上存放应用程序运行时一直存在的数据,由于位置固定,下次调用时便省去了查找的麻烦),称为方法区。 类型信息(这里的类型指类或接口)是由类加载器在类加载时从类文件中提取出来的,被存储在方法区。另外,类(静态)变量也存储在方法区中。JVM在运行应用时要大量使用存储在方法区中的类型信息。在类型信息的表示上,设计者除了要尽可能提高应用的运行效率外,还要考虑空间问题。根据不同的需求,JVM的实现者可以在时间和空间上追求一种平衡。 对每个加载的类型,jvm必须在方法区中存储以下类型信息: 1)这个类型的完整有效名(全限定名) 2)这个类... 阅读全文

posted @ 2013-02-03 15:00 夜月升 阅读(677) 评论(0) 推荐(0) 编辑

关于Java中的String类(转载/整理)

摘要: 关于String类的说明1)String使用private final char value[]来实现字符串的存储,也就是说String对象创建之后,就不能再修改此对象中存储的字符串内容,就是因为如此,才说String类型是不可变的(immutable);2)String类有一个特殊的创建方法,就是使用""双引号来创建,例如new String("i am")实际创建了2个String对象,一个是"i am"通过""双引号创建的,另一个是通过new创建的,只不过他们创建的时期不同,一个是编译期,一个是运行期;3)j 阅读全文

posted @ 2013-02-03 13:08 夜月升 阅读(178) 评论(0) 推荐(0) 编辑

导航