来自网络博客: step1:《Java编程思想》 1year; 看书的最终目的是为了引发自己的思考,只看书不思考的话,那叫背书,不叫看书《大话设计模式》《重构 改善既有代码的设计》《深入理解Java虚拟机》《effective java》《Java并发编程实战》 step2:《深入理解计算机系统》《 ...
分类:
其他好文 时间:
2018-07-24 14:57:31
阅读次数:
149
Java与C++之间有一堵由内存动态分配和垃圾收集技术所围成的“高墙”,墙外面的人想进去,墙里面的人想出来。——《深入理解Java虚拟机》周志明 Java的运行时数据区域 程序计数器:是一块较小的内存空间,是当前线程所执行的字节码的行号指示器。该区域是线程私有的,也是唯一一个不会抛出OutOfMem ...
分类:
编程语言 时间:
2018-07-22 17:03:54
阅读次数:
133
static 和 final 关键字 对实例变量赋初始值的影响 最近一直在看《深入理解Java虚拟机》,在看完了对象内存分配、Class文件格式之后,想深扒一下实例变量是如何被赋上初始值的这个问题的细节。 在2.3.1小节中讲对象创建的时候,讲到内存分配有两种方式:一种是指针碰撞;另一种是空闲列表。 ...
分类:
其他好文 时间:
2018-07-22 00:16:06
阅读次数:
216
1.前言 本文记录内容来自《深入理解Java虚拟机》的第十章早期(编译期)优化其中一节内容,其他的内容个人觉得暂时不需要过多关注,比如语法、词法分析,语义分析和字节码生成的过程等。主要关注的就是Java的一些语法糖是如何实现的。 语法糖不会提供实质性的功能改进,但是它们或能提高效率,或能提升语法的严 ...
分类:
编程语言 时间:
2018-07-21 22:50:16
阅读次数:
215
1.前言 本文归纳一下对Java内存管理机制的理解,尽可能通俗易懂,知识来自于深入理解Java虚拟机一书。 2.起源 计算机简单理解就是根据执行计划,通过参数得到结果。执行计划就是程序了,参数就是实际变量,最终运行得到我们要的结果。磁盘由于其廉价且持久化,用于保存程序和数据,但是受制于执行速度,内存 ...
分类:
编程语言 时间:
2018-07-17 19:52:25
阅读次数:
202
Java技术体系 Java程序设计语言、Java虚拟机、Java API类库统称为JDK Java API类库中Java SE API子集和Java虚拟机统称为JRE Java发展史 1991年4月 Java语言的前身-Oak语言启动 1995年5月 Oak改名为Java并发布1.0版本 Write ...
分类:
编程语言 时间:
2018-07-17 12:44:00
阅读次数:
184
运行时数据区域 1、线程独有的内存区域 程序计数器空间较小,是当前线程执行字节码的行号指示器,字节码解释器工作时就是通过改变这个计数器的值来选取下一条需要执行的字节码指令。 如果线程执行的是Java方法,记录的是正在执行的虚拟机字节码指令的地址;如果执行的是Native方法,则为空 虚拟机栈生命周期 ...
分类:
编程语言 时间:
2018-07-17 12:36:22
阅读次数:
166
1,通过使用静态字段,只有真正定义这个字段的类才会被初始化,(子类不初始化,父类初始化 2,new数组,不初始化 3,通过类来调用一些类的常量,可以不初始化类,(常量在编译期,被优化到NotInitialization类,成为了他的引用,所以可以不初始化 4,类和接口的初始化必要条件不同的是,接口可 ...
分类:
编程语言 时间:
2018-07-16 11:16:21
阅读次数:
135
Java和C++之间有一堵由内存管理和垃圾收集技术所围成的“高墙”,墙外的人想进去,墙内的人却想出来。 摘自《深入理解Java虚拟机》 作为一个Java程序员,因为虚拟机的好处,在开发过程中一般不用关心内存分配和垃圾回收方面的内容,这就让我在跟C++的朋友聊天或沟通的时候,总觉得自己是个假的程序员, ...
分类:
编程语言 时间:
2018-07-15 00:49:37
阅读次数:
198
摘要: 每个开发人员对java.lang.ClassNotFoundExcetpion这个异常肯定都不陌生,这个异常背后涉及到的是Java技术体系中的类加载机制。本文简述了JVM三种预定义类加载器,即启动类加载器、扩展类加载器和系统类加载器,并介绍和分析它们之间的关系和类加载所采用的双亲委派机制,给 ...
分类:
编程语言 时间:
2018-07-11 22:46:45
阅读次数:
189