参考:1.JVM Specification: http://docs.oracle.com/javase/specs/jvms/se7/html/jvms-2.html#jvms-2.5 2.《深入理解Java虚拟机》 刚开始看JVM Specification ,说实话由于专业英语不过关,有些关...
分类:
其他好文 时间:
2015-05-12 00:03:20
阅读次数:
172
引言 这一章讲的是Java虚拟机的内存区域可以分为几个部分,书中讲到可以分为五个部分:分别是堆、栈、程序计数器、方法区、本地方法栈 其中堆里存放了对象的实例 而常说的基本数据类型,以及对象的引用就是存放在栈中的,其实更确切的说是存放在虚拟机栈的局部变量表中,虚拟机栈除了局部变量表之外,还担任了描述的...
分类:
编程语言 时间:
2015-05-10 16:57:22
阅读次数:
207
引言 对于Java中的垃圾回收机制,我们需要了解几个方面,本文也是从这几个方面通过回答这些问题而弄明白Java中的垃圾是如何回收的 首先我们要知道哪些内存需要回收,这一部分涉及到的算法有引用计数算法,根搜算法,但引用计数算法无法解决对象之间相互循环引用的问题。 知道了哪些内存需要回收之后,我们还需要...
分类:
编程语言 时间:
2015-05-10 16:54:38
阅读次数:
295
在IntelliJ IDEA里面Ctrl+Alt+M用来拆分方法。选中一段代码,敲下这个组合,很easy。Eclipse也用类似的快捷键,使用 Alt+Shift+M。我讨厌长的方法,提起这个以下这种方法我就认为太长了:public void processOnEndOfDay(Contract c...
分类:
编程语言 时间:
2015-05-07 20:24:35
阅读次数:
131
笔记,深入理解java虚拟机 Java运行时内存区域 程序计数器,线程独占,当前线程所执行的字节码的行号指示器,每个线程需要记录下执行到哪儿了,下次调度的时候可以继续执行,这个区是唯一不会发生oom的 栈,线程独占,包含虚拟机栈或native method stack,用于存放局部变量的 堆,线程共...
分类:
编程语言 时间:
2015-04-20 16:24:24
阅读次数:
232
JIT编译器,英文写作Just-In-Time Compiler,中文意思是即时编译器类字段不需要初始化的原因:内存分配完成后,虚拟机需要将分配到的内存空间都初始化为零值(不包括对象头),如果使用TLAB,这一工作过程也可以提前至TLAB分配时进行。这一步操作保证了对象的实例字段在Java代码中可以...
分类:
编程语言 时间:
2015-04-09 16:49:48
阅读次数:
334
垃圾回收器如何确定哪些对象要回收: 引用计数法 很多教科书判断对象是否存活的算法是这样的:给对象添加一个引用计数器,每当有一个地发引用它时,计数器值就加1;当引用失效时,计数器值就减1;任何时刻计数器都...
分类:
编程语言 时间:
2015-04-08 21:40:27
阅读次数:
141
第一周:From:2015.03.09To:2015.03.15学习:看书,《深入理解Java虚拟机(第二版)》、《Head First JSP & Servlet》和《淘宝技术这十年》。《深入理解Java虚拟机》有的地方没看懂,囫囵吞枣地就过了,还得再看一遍。Head First系列的书籍相当不错...
分类:
其他好文 时间:
2015-04-06 21:50:06
阅读次数:
223
主内存与工作内存 Java内存模型的主要目标是定义程序中各个变量的访问规则,即在虚拟机中将变量存储到内存和从内存中取出变量值这样的底层细节。 此处的变量(Variable)与Java编译中所说的变量略有区别,它包括了实例字段,静态字段和构成数组对象的元素,但是不包括局部变量与方法参数,因为后者是线程...
分类:
编程语言 时间:
2015-04-06 11:18:29
阅读次数:
137
当一个变量定义成volatile之后,它将具备两种特性: 1、第一是保证此变量对所有线程的可见性,这里的"可见性"是指当一条线程修改了这个变量的值,新值对于其它线程是可以立即得知的,变量值在线程间传递均需要通过主内存来完成,如:线程A修改一个普通变量的值,然后向主内存进行回写,另外一条线程B在线程A...
分类:
编程语言 时间:
2015-04-06 11:15:49
阅读次数:
171