对于Java程序员来说,虚拟机和多线程方面的知识是必不可少的。这里就来聊一聊Java虚拟机的一些基础和概念,主要内容源自《深入理解Java虚拟机》这本书。 首先为什么要有虚拟机呢?因为对象的创建和销毁是一个很频繁的操作,由程序员来维护,一方面成本有点高,增加开发成本;另一方面,如果操作不当,发生了内 ...
分类:
编程语言 时间:
2017-07-09 16:18:42
阅读次数:
225
内存中对象的创建、对象的结构以及訪问方式。 一、对象的创建 在语言层面上。对象的创建仅仅只是是一个newkeyword而已,那么在虚拟机中又是一个如何的过程呢? (一)推断类是否载入。虚拟机遇到一条new指令的时候,首先会检查这个指令的參数能否在常量池中定位到一个类的符号引用,而且检查这个符号代表的 ...
分类:
编程语言 时间:
2017-07-09 13:57:40
阅读次数:
217
Overview 走近Java:介绍Java发展史 第二部分:自动内存管理机制 程序员把内存控制的权利交给了Java虚拟机,从而可以在编码时享受自动内存管理。但另一方面一旦出现内存泄漏和溢出等问题,就需要了解一些底层的知识来进行错误排查。 自动内存管理机制:介绍内存是如何划分的。 垃圾收集器与内存分 ...
分类:
编程语言 时间:
2017-07-09 12:41:40
阅读次数:
231
处理器和缓存 由于计算机的存储设备与处理器的运算速度之间有着几个数量级的差距,所以现代计算机系统都不得不加入一层读写速度尽可能接近处理器运算速度的高速缓存来作为内存与处理之间的缓冲:将运算需要使用的数据复制到缓存中,让运算速度快速运行,当运算结束后再从弄个缓存同步回内存之中,这样处理器就无需等待缓慢... ...
分类:
编程语言 时间:
2017-07-02 23:13:28
阅读次数:
259
这一章节的内容实用性不强 所以不再手打笔记 转载了一篇 原文地址是http://blog.csdn.net/qq_27350929/article/details/54837595 在部分的商用虚拟机中,Java程序最初是通过解释器(Interpreter)进行解释执行的,当虚拟机发现某个方法或代码... ...
分类:
编程语言 时间:
2017-07-02 23:11:20
阅读次数:
207
虚拟机类加载机制 类从被加载到虚拟机内存开始,到卸载出内存为止,整个生命周期包括:加载,验证,准备,解析,初始化,使用,卸载等7个阶段。其中,验证,准备,解析3个部分称为连接。 以上7个阶段中,加载,验证,准备,初始化和卸载五个阶段的顺序是确定的,类的加载过程必需按照这种顺序按部就班的开始(开始并不 ...
分类:
编程语言 时间:
2017-07-01 19:27:14
阅读次数:
194
jre的bin目录下的工具,都非常小。它都是tools.jar下面的代码的一层封装而已。tools.jar不是java标准,是Hotspot实现的。 名称作用jpsJVM Process Status Tool,现实指定系统内所有的HotSpot虚拟机进程jstatJVM Statistics Mo... ...
分类:
编程语言 时间:
2017-06-27 23:39:08
阅读次数:
307
引用计数算法 很多教科书判断对象是否存活的算法是这样的:给对象中添加一个引用计数器,每当有一个地方引用它时,计数器值就加1;当引用失效时,计数器值就减1;任何时刻计数器都为0的对象就是不可能再被使用的。 客观地说,引用计数算法(Reference Counting)的实现简单,判定效率也很高,在大部... ...
分类:
编程语言 时间:
2017-06-27 08:13:20
阅读次数:
208
看了深入理解JAVA虚拟机已经有一段时间了 发现很多东西如果不总结 脑子里总是没有一条线贯穿起来,也比较模糊混乱,所以还是有必要利用逻辑思维图总结下。 JVM看了下 大致比较重要的分内存区域划分、垃圾收集器与内存分配策略、类加载机制、高并发这几块。其中其实都有比较紧密的联系 ...
分类:
其他好文 时间:
2017-06-25 12:42:47
阅读次数:
114