最近得空,就把《深入理解Java虚拟机》重新看了一遍,特写下现在的读书笔记,总结知识点,记录现在的理解,便于以后的回顾。下面的内容也会按照这本书的章节来划分知识点! Let's go! 想要了解Java虚拟机,一定要先明白Java运行时划分为哪些数据区域,具体的可以参考下图,按照是否为线...
分类:
其他好文 时间:
2014-11-21 14:04:11
阅读次数:
131
java与C++之间有一堵由内存动态分配和垃圾收集技术所围成的高墙,墙外的人想进去,而墙内的人想出来。[来自深入理解java虚拟机]...
分类:
编程语言 时间:
2014-11-09 15:26:08
阅读次数:
225
java 虚拟机自动内存管理。java虚拟机在执行java程序的过程中会把它所管理的内存划分为若干个不同区域1 程序计数器每个线程都有一个独立的计数器,用来指示需要执行的字节码的位置。2 虚拟机栈虚拟机栈是用来描述java方法执行的内存模型,每个方法被执行的时候都会同时创建一个栈帧用于储存局部变量表...
分类:
编程语言 时间:
2014-10-21 19:37:14
阅读次数:
197
在IntelliJ IDEA里面Ctrl+Alt+M用来拆分方法。选中一段代码,敲下这个组合,非常简单。Eclipse也用类似的快捷键,使用 Alt+Shift+M。我讨厌长的方法,提起这个下面这个方法我就觉得太长了:...
分类:
编程语言 时间:
2014-10-19 21:25:02
阅读次数:
393
随着多核CPU的高速发展,为了充分利用硬件的计算资源,操作系统的并发多任务功能正变得越来越重要,但是CPU在进行计算时,还需要从内存读取输出,并将计算结果存放到内存中,然而由于CPU的运算速度比内存高几个数量级,CPU内的寄存器数量和容量有限,为了不让CPU长时间处于等待内存的空闲状态,在CPU和内...
分类:
编程语言 时间:
2014-10-09 18:25:17
阅读次数:
162
Tomcat 等主流Web服务器为了实现下面的基本功能,都实现了不止一个自定义的类加载器:(1).部署在同一个服务器上的两个web应用程序所使用的java类库可以相互隔离。(2).部署在同一个服务器上的两个web应用程序所使用的java类库可以相互共享。(3).许多Web服务器本身使用java语言实...
分类:
编程语言 时间:
2014-10-09 17:36:17
阅读次数:
285
Java的并发编程是依赖虚拟机内存模型的三个特性实现的:(1).原子性(Atomicity):原子性是指不可再分的最小操作指令,即单条机器指令,原子性操作任意时刻只能有一个线程,因此是线程安全的。Java内存模型中通过read、load、assign、use、store和write这6个操作保证变量...
分类:
编程语言 时间:
2014-10-09 16:31:07
阅读次数:
247
通过简单的小例子程序,演示java虚拟机各部分内存溢出情况:(1).java堆溢出:Java堆用于存储实例对象,只要不断创建对象,并且保证GC Roots到对象之间有引用的可达,避免垃圾收集器回收实例对象,就会在对象数量达到堆最大容量时产生OutOfMemoryError异常。想要方便快速地产生堆溢...
分类:
编程语言 时间:
2014-10-09 15:49:38
阅读次数:
212
Java虚拟机类加载过程是把Class类文件加载到内存,并对Class文件中的数据进行校验、转换解析和初始化,最终形成可以被虚拟机直接使用的java类型的过程。在加载阶段,java虚拟机需要完成以下3件事:a.通过一个类的全限定名来获取定义此类的二进制字节流。b.将定义类的二进制字节流所代表的静态存...
分类:
编程语言 时间:
2014-10-09 15:00:28
阅读次数:
223
C/C++等纯编译语言从源码到最终执行一般要经历:编译、连接和运行三个阶段,连接是在编译期间完成,而java在编译期间仅仅是将源码编译为Java虚拟机可以识别的字节码Class类文件,Java虚拟机对中Class类文件的加载、连接都在运行时执行,虽然类加载和连接会占用程序的执行时间增加性能开销,但是...
分类:
编程语言 时间:
2014-10-09 14:45:38
阅读次数:
162