原文网址:http://www.cnblogs.com/panjun-Donet/archive/2010/08/10/1796209.html(一)java 静态代码块 静态方法区别一般情况下,如果有些代码必须在项目启动的时候就执行的时候,需要使用静态代码块,这种代码是主动执行的;需要在项目启动的...
分类:
编程语言 时间:
2015-03-02 18:19:21
阅读次数:
168
Java反射详解分类:java,基础日期:2012-07-20作者:ticmy19反射,是Java中非常重要的一个功能,如果没有反射,可以说很多框架都难以实现。什么是反射?说白了就是可以通过Java代码获取装载到方法区的类信息的手段。当装载一个类时,会在方法区产生一个数据结构,该结构中包含着装载的类...
分类:
编程语言 时间:
2015-03-01 00:20:49
阅读次数:
320
深入理解String类的immutable特性。从字节码指令层面了解字符串连接符号+的本质,以及如何避免低效率使用+号。了解String中==与equals方法判断的异同及常见面试题解答。最后,附上常量池说明及通过反射改变方法区中的运行时常量池代码...
分类:
编程语言 时间:
2015-02-28 11:27:20
阅读次数:
177
可达性分析算法
来判断对象是否存活。这个算法的基本思路是通多一系列的称为“gc roots”的对象作为起始点,从这些节点开始向下搜索,搜索所走过的路径称为引用链,当一个对象到gc roots没有任何引用链项连时(图论来说,从gc到这个对象不可达),则证明此对象是不可用的。
JAVA语言中,可作为gc roots的对象包括下面几种:
虚拟机栈(栈帧中的本地变量表)中引用的对象。
方法区中类静态属性...
分类:
其他好文 时间:
2015-02-09 12:57:44
阅读次数:
138
Java里的堆(heap)栈(stack)和方法区(method) 基础数据类型直接在栈空间分配, 方法的形式参数,直接在栈空间分配,当方法调用完成后从栈空间回收。 引用数据类型,需要用new来创建,既在栈空间分配一个地址空间,又在堆空间分配对象的类变量 。 方法的引用参数,在栈空间分配一个地址空间...
分类:
其他好文 时间:
2015-02-06 00:33:16
阅读次数:
301
方法区和堆区是数据共享区。栈区:数据不共享。方法参数、局部变量、参与运算的中间结果、返回值等等都在栈区中。堆区:数据共享。存放对象。方法区存放类型信息,类型信息包括:字段信息、方法信息、该类型的常量池、类变量、一个到类ClassLoader的引用,一个到Class类的引用。这部分数据是共享的,是一个...
分类:
编程语言 时间:
2015-02-04 21:38:26
阅读次数:
172
Java虚拟机的内存分区:Java栈、堆、方法区、本地方法栈、PC寄存器。还有一个常量池的概念,虚拟机会为每种类型分配一个常量池,而不是实例。例如有一个类有很多子类,那么在父类定义的final变量,在子类是不能被改变的。可以说明是在类型上分配的。被static修饰的变量或者方法是属于类本身,而不属于...
分类:
编程语言 时间:
2015-02-04 20:04:31
阅读次数:
168
重点关注几个问题:-对象已死吗?采用引用计数法(不能解决相互循环引用问题)或可达性分析法。引用计数法:计算对象的引用数,计数为0时对象被回收。可达性分析:通过一系列的"GC Roots"的对象(如栈中引用的对象、方法区中类静态属性引用的对象、常量引用的对象)作为起始向下搜索,搜索所走过的路径称为引用...
分类:
其他好文 时间:
2015-02-03 12:47:24
阅读次数:
127
主存储器和工作存储器Java虚拟机在执行Java程序的过程中会把它管理的内存划分为若干个不同的数据区域,这些区域包括方法区,堆,虚拟机栈,本地方法栈,程序计数器。方法区存储类信息,常量,字节码等数据,堆内存存储所有生成的对象,方法区和堆内存为所有线程共享,而虚拟机栈是每个线程独有的,也就是说每个线程...
分类:
编程语言 时间:
2015-02-01 20:17:58
阅读次数:
263
一、背景知识
1、JVM体系结构
2、JVM运行时数据区
3、JVM内存模型
JVM运行时内存 = 共享内存区 + 线程内存区
3-1、共享内存区
共享内存区 = 持久带 + 堆
持久带 = 方法区 + 其他
堆 = Old Space + Young Space
Young Space = Eden +...
分类:
编程语言 时间:
2015-01-23 11:14:02
阅读次数:
306