
读书笔记
iteye_7011
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
《深入理解Java虚拟机》笔记之第2章 Java内存区域与内存溢出异常
1、Java虚拟机运行时的数据区域,如下图所示。 (1) 程序计数器 每个线程都有一个独立的程序计数器,该内存区域不会出现OutOfMemoryError。(2) Java虚拟机栈线程私有,生命周期与线程相同。虚拟机栈描述的是Java方法执行的内存模型:每个方法被执行的时候都会同时创建一个栈帧(Stack Frame)用于存储局部变量表、操作数栈、动...2013-08-06 23:05:36 · 125 阅读 · 0 评论 -
《Java核心技术(第八版)》笔记之第4章对象与类
4.2 使用现有类1. 一个对象变量并没有实际包含一个对象,而仅仅引用一个对象。 new操作符的返回值也是一个引用。 (P93)2.所有Java对象都存储在堆中. (P94) 4.4 静态域和静态方法1.static:属于类且不属于类对象的变量和方法。 (P112) 4.5 方法参数1. Java采用的是值调用,即方法得到的是所有参数值的一个拷贝。 参数有两种...原创 2013-03-14 00:08:04 · 89 阅读 · 0 评论 -
《Java核心技术(第八版)》笔记之第5章继承
5.1 类、超类和子类1. Java中,所有的继承都是公有继承。2. 关键字this的两个作用:一是引用隐式参数,二是调用该类的其他构造器;关键字super的两个作用:一是调用超类的方法,二是调用超类的构造器。(P146)3.多态:一个变量可以引用多种实际类型的现象;动态绑定:在运行时能够自动地选择调用哪个方法的现象;静态绑定:private、static、final方法或者构造器...原创 2013-03-11 23:47:30 · 102 阅读 · 0 评论 -
《Java核心技术(第八版)》笔记之第6章接口与内部类
一、接口1.接口主要用来描述类具有什么功能,而并不给出每个功能的具体实现. (P204) 2.接口中的方法自动属于public,因为声明时可以不使用关键字public. 但是在实现接口时,必 须把方法声明为public,否则,编译器将视为类的默认访问属性(包可见性)(P205) 3.接口可以定义常量[color=red][b](自动设置为public static fina...原创 2013-03-03 22:57:26 · 91 阅读 · 0 评论 -
《Java核心技术(第八版)》笔记之第11章异常、断言和调试
一、异常1. 一个方法必须声明所有可能抛出的已检查异常,而未检查异常要么不可控制(Errror),要么就是应该避免发生的逻辑异常(RuntimeException)2. 定义异常时应该包括两个构造器:一是默认的构造器;二是带有详细描述信息的构造器。3. finally与return语句同时使用时,finally中的return语句可能会覆盖原始值。例1:[code="java"...原创 2013-03-03 21:24:24 · 82 阅读 · 0 评论 -
《深入理解Java虚拟机》笔记之第11章 晚期(运行期)优化
1、运行期 虚拟机会把“热点代码”编译成与本地平台相关的机器码,并进行各种层次的优化,完成这个任务的编译器称为即时编译器(Just In Time Compiler,JIT)。所谓“热点代码”,是指:(1)被多次调用的方法;(2)被多次执行的循环体(依然会以整个方法为编译对象)。由于HotSpot虚拟机使用基于计数器的热点探测方法,存在热度衰减(Counter Deca...原创 2013-09-07 10:41:30 · 127 阅读 · 0 评论 -
《深入理解Java虚拟机》笔记之第10章 早期(编译期)优化
1、编译期 定义:把*.java文件转换成*.class文件的过程。 虚拟机设计团队把对性能的优化集中到了后端的即时编译器中,这样可以让那些不是由Javac产生的Class文件(如JRuby、Groovy等语言的Class文件)也同样能享受到编译器优化所带来的好处。 可以说,Java中即时编译器在运行期的优化过程对于程序运行来说更重要,而前端编...原创 2013-09-07 10:37:01 · 118 阅读 · 0 评论 -
《深入理解Java虚拟机》笔记之第9章 类加载及执行子系统的案例与实战
1、Class文件以何种格式存储,类型何时加载、如何连接,以及虚拟机如何执行字节码指令等都是由虚拟机直接控制的行为;能通过程序进行操作的,主要是字节码生成与类加载器这两部分的功能。 2、Web服务器的类加载的特性: (1)部署在同一个服务器上的两个web应用程序所使用的Java类库可以实现相互隔离; (2)部署在同一个服务器上的两个Web应用程序所使用的Java类库可以...原创 2013-09-05 23:39:56 · 225 阅读 · 0 评论 -
《深入理解Java虚拟机》笔记之第8章 虚拟机字节码执行引擎
1、Java虚拟机的执行引擎都是一致的:输入的字节码文件,处理过程是字节码解析的等效过程,输出的是执行结果。 2、栈帧(1)每个方法从调用开始到执行完成的过程,就对应着一个栈帧在虚拟机栈里面从入栈到出栈的过程。栈帧存储了方法的局部变量表、操作数栈、动态连接和方法返回地址等信息。 (2)方法返回地址:只要本方法的异常表中没有搜索到匹配的异常处理器,那么将不会给它的上层调用者产生任...原创 2013-09-05 23:38:35 · 123 阅读 · 0 评论 -
《深入理解Java虚拟机》笔记之第7章 虚拟机类加载机制
1、类的生命周期 2、虚拟机规范严格控制规定了有且只有四种情况必须立即对类进行“初始化”(而加载、验证、准备自然需要在这些之前开始)。 (1)使用new关键字实例化对象、读取或设置一个类的静态字段(被final修饰、已在编译期把结果放入常量池的静态字段除外)、以及调用一个类的静态方法的时候。更严格的说,是遇到new、getstatic、putstatic或invoke...原创 2013-09-05 23:34:17 · 101 阅读 · 0 评论 -
《深入理解Java虚拟机》笔记之第6章 类文件结构
1、Class文件是一组以8位字节为基础单位的二进制流,各个数据项目严格按照顺序紧凑地排列在Class文件中,中间没有添加任何分隔符。 Class文件中只有两种数据类型:无符号数和表。无符号数可以描述数字、索引引用、数量值,或者按照UTF-8编码构成的字符串值;表是由多个无符号数或其他表作为数据项构成的复合数据类型。整个Class文件本质上就是一张表。 2、Class文...原创 2013-09-03 22:58:55 · 107 阅读 · 0 评论 -
《深入理解Java虚拟机》笔记之第5章 调优案例分析与实战
1、案例: (1)集群间同步导致的内存溢出。使用JBossCache这种集群缓存来同步,构建全局缓存。可以允许读操作频繁,因为数据在本地内存有一份副本,读取的动作不会耗费多少资源,但不应当有过于频繁的写操作,这会带来很大的网络同步的开销。(2) 堆外内存导致的溢出错误。 Direct Memory区的内存溢出。Direct Memory不能像新生代和老年代那样,发现空...原创 2013-08-30 23:31:26 · 183 阅读 · 0 评论 -
《深入理解Java虚拟机》笔记之第3章 垃圾收集器与内存分配策略
1、判断对象是否存活的算法 (1)引用计数算法:对象中添加一个引用计数器,有一个地方引用它时,计数器值加1;当引用失效时,计数器值减1。计数器的值为0的对象就是不可能再被使用的。(Python、微软的COM技术、Squirrel等使用此算法进行内存管理)。缺点在于难以解决对象之间的相互循环引用问题。 (2)根搜索算法:从一系列的名为“GC Roots”的对象作为起始点,从这些节...原创 2013-08-30 23:26:20 · 127 阅读 · 0 评论 -
《深入理解Java虚拟机》笔记之第12章 Java内存模型与线程
1、Java内存模型 Java包括内存模型规定了所有的变量(这里的变量与java编程中的变量略有区别,它包括了实例字段、静态字段和构成数据对象的元素,但不包括局部变量和方法参数,因为后者是线程私有的,不会被共享)都存储在主内存中,此外,每个线程还有自己的工作内存。线程的工作内存中保存了被该线程使用到的变量的主内存副本拷贝。线程对变量的所有操作都在工作内存中进行,不同线程之间...2013-08-06 23:11:56 · 154 阅读 · 0 评论 -
《Java核心技术(第八版)》笔记之第13章集合
13.1 集合接口1. 使用迭代器Iterator进行访问时,元素被访问的顺序取决于集合类型。如果对ArrayList进行迭代,会从索引0开始,每迭代一次,索引值加1;如果是HashSet,那每个元素将会按照某种随机的次序出现。 (P558) 13.2 具体的接口1.在Java程序设计语言中,所有链表实际上都是双向链接的(doubly linked)---即每个结点还存放着指向...原创 2013-03-18 22:09:58 · 292 阅读 · 0 评论