《Java编程思想》 --> 《大话设计模式》 --> 《重构 改善既有代码的设计》 --> 《effective java》《深入理解Java虚拟机》 --> 《Java编程并发实战》 --> 《深入理解计算机系统》(网络编程:《tcp/ip 详解 卷一、卷二、卷三》计算机研究:《数据结构与算法》 ...
分类:
编程语言 时间:
2016-06-08 01:32:56
阅读次数:
194
本文是《深入理解Java虚拟机》第七章的读书总结。
Class文件中存储了类(或接口)中的元数据信息和编译后的字节码。这些信息需要存入Java虚拟机中才能被虚拟机利用和执行。而Class文件是需要Java虚拟机加载到虚拟机内存中的。这就涉及到几个问题,什么时候需要加在一个Class文件?虚拟机如何加载Class文件到虚拟机内存中?Class文件中的信息进入虚拟机内存中后会发生怎么样的变化?
1...
分类:
编程语言 时间:
2016-06-06 01:17:00
阅读次数:
202
一 JAVA运行时内存区域 JVM在加载class文件时,会将class文件定义的数据结构转为运行时内存中的数据,那么jvm是如何安排运行时的内存区域呢? jvm将运行时内存划分为以下几个部分: 堆:所有线程共享 方法区:类信息、静态变量、常量等 运行时常量池:class文件的常量池(字面常量和符号 ...
分类:
编程语言 时间:
2016-06-05 23:20:04
阅读次数:
181
最近项目已经要提测了,有时间来考虑一些性能上的事儿了。之前拜读过《深入理解java虚拟机》,只可惜当时功力尚浅,有些东西还是不太懂,而且应用场景也没有,所以借这次机会看看。当然了,这次并不包含什么深入的技术内容,只是使用VisualVM来连接远程的Tomcat,先摆好姿势。 VisualVM Vis ...
分类:
其他好文 时间:
2016-05-31 20:34:14
阅读次数:
166
本文是《深入理解Java虚拟机》一书中第三章的读书总结。
前面介绍了Java内存结构和HotSpot虚拟机在堆内存中管理对象的过程。不过,在Java程序中对象的创建是非常频繁的,而内存的大小又是有限的,为了内存的重复利用,就需要对内存中的对象进行垃圾收集。其实,这也是Java和C++的一个区别,在Java中可以进行自动的垃圾收集,而C和C++中需要程序员手动回收不再使用的对象。
Java中的垃...
分类:
编程语言 时间:
2016-05-27 12:18:51
阅读次数:
224
本文是基于周志明的《深入理解Java虚拟机》
Java 虚拟机的指令由一个字节长度的、代表着某种特定操作含义的操作码(Opcode)以及跟随其后的零至多个代表此操作所需参数的操作数(Operands)所构成。虚拟机中许多指令并不包含操作数,只有一个操作码。
如果忽略异常处理,那 Java 虚拟机的解释器使用下面这个伪代码的循环即可有效地工作:
do {
自动计算...
分类:
其他好文 时间:
2016-05-22 12:24:29
阅读次数:
335
原文 http://www.cnblogs.com/prayers/p/5515245.html 一、运行时数据区域 3 1.1 程序计数器 3 1.2 Java虚拟机栈 3 1.3 本地方法栈 3 1.4 Java堆 3 1.5 方法区 3 1.6 运行时常量池 4 二、 hotspot虚拟机对象 ...
分类:
编程语言 时间:
2016-05-21 20:26:52
阅读次数:
229
一、运行时数据区域 3 1.1 程序计数器 3 1.2 Java虚拟机栈 3 1.3 本地方法栈 3 1.4 Java堆 3 1.5 方法区 3 1.6 运行时常量池 4 二、 hotspot虚拟机对象 4 2.1 对象的创建 4 1. 检查 4 2. 分配内存 4 3. Init 4 2.2 对象 ...
分类:
编程语言 时间:
2016-05-21 19:03:39
阅读次数:
493
本文是基于周志明的《深入理解Java虚拟机》
从不同角度分析垃圾收集器,可以将其分为不同的类型。
1. 按线程数分,可以分为串行垃圾回收器和并行垃圾回收器。串行垃圾回收器一次只使用一个线程进行垃圾回收;并行垃圾回收器一次将开启多个线程同时进行垃圾回收。在并行能力较强的 CPU 上,使用并行垃圾回收器可以缩短 GC 的停顿时间。
2. 按照工作模式分,可以分为并发式垃圾回收器和独占式垃圾回...
分类:
其他好文 时间:
2016-05-18 19:27:37
阅读次数:
207
最近看了周志明版本的《深入理解Java虚拟机》第一版和第二版,写的很好,收获很多,此处总结一下。 jvm中内存划分: 如上图,一共分为五块,其中: 线程共享区域为: 1、java堆 2、方法区 线程私有区域为: 3、JVM栈 4、本地方法栈 5、程序计数器 各区域作用: 1、java堆: java堆 ...
分类:
其他好文 时间:
2016-05-11 14:47:56
阅读次数:
116