上一页 1 ··· 26 27 28 29 30 31 32 33 34 ··· 45 下一页
摘要: Java虚拟机的指令由一个字节长度的、代表着某种特定操作含义的数字(称为操作码,Opcode)以及跟随其后的零至多个代表此操作所需参数(称为操作数,Operands)而构成。由于Java虚拟机采用面向操作数栈而不是寄存器的架构,所以大多数的指令都不包含操作数,只有一个操作码。 字节码指令集是一种具有 阅读全文
posted @ 2016-11-12 16:30 wade&luffy 阅读(1784) 评论(0) 推荐(1) 编辑
摘要: 各种不同平台的虚拟机与所有平台都统一使用的程序存储格式——字节码(ByteCode)是构成平台无关性的基石,除了平台无关性,虚拟机的另外一种中立特性——语言无关性正越来越被开发者所重视。在Java发展之初,设计者就曾经考虑过并实现了让其他语言运行在Java虚拟机之上的可能性,他们在发布规范文档的时候 阅读全文
posted @ 2016-11-12 15:58 wade&luffy 阅读(513) 评论(0) 推荐(0) 编辑
摘要: 虚拟机设计团队把类加载阶段中的“通过一个类的全限定名来获取描述此类的二进制字节流”这个动作放到Java虚拟机外部去实现,以便让应用程序自己决定如何去获取所需要的类。实现这个动作的代码模块称为“类加载器”。但类加载器在类层次划分、OSGi、热部署、代码加密等领域大放异彩,成为了Java技术体系中一块重 阅读全文
posted @ 2016-11-12 13:44 wade&luffy 阅读(287) 评论(0) 推荐(0) 编辑
摘要: 参数描述 -XX:+UseSerialGC Jvm运行在Client模式下的默认值,打开此开关后,使用Serial + Serial Old的收集器组合进行内存回收 -XX:+UseParNewGC 打开此开关后,使用ParNew + Serial Old的收集器进行垃圾回收 -XX:+UseCon 阅读全文
posted @ 2016-11-11 13:30 wade&luffy 阅读(817) 评论(0) 推荐(0) 编辑
摘要: 每一种收集器的日志形式都是由它们自身的实现所决定的,换而言之,每个收集器的日志格式都可以不一样。但虚拟机设计者为了方便用户阅读,将各个收集器的日志都维持一定的共性,例如以下两段典型的GC日志: 33.125:[GC [DefNew: 3324K->152K(3712K),0.0025925 secs 阅读全文
posted @ 2016-11-11 13:29 wade&luffy 阅读(257) 评论(0) 推荐(0) 编辑
摘要: 枚举根节点 从可达性分析中从GC Roots节点找引用链这个操作为例,可作为GC Roots的节点主要在全局性的引用(例如常量或类静态属性)与执行上下文(例如栈帧中的本地变量表)中,现在很多应用仅仅方法区就有数百兆,如果要逐个检查这里面的引用,那么必然会消耗很多时间。另外,可达性分析对执行时间的敏感 阅读全文
posted @ 2016-11-11 13:02 wade&luffy 阅读(2112) 评论(0) 推荐(0) 编辑
摘要: 通过一系列的称为“GC Roots”的对象作为起始点,从这些节点开始向下搜索,搜索所走过的路径称为引用链(Reference Chain),当一个对象到GC Roots没有任何引用链相连(用图论的话来说,就是从GC Roots到这个对象不可达)时,则证明此对象是不可用的。 在Java语言中,可作为G 阅读全文
posted @ 2016-11-11 12:51 wade&luffy 阅读(220) 评论(0) 推荐(0) 编辑
摘要: 本文内容的目的有两个:第一,通过代码验证Java虚拟机规范中描述的各个运行时区域存储的内容;第二,在工作中遇到实际的内存溢出异常时,能根据异常的信息快速判断是哪个区域的内存溢出,知道什么样的代码可能会导致这些区域内存溢出,以及出现这些异常后该如何处理。 Java堆溢出 Java堆用于存储对象实例,只 阅读全文
posted @ 2016-11-11 12:32 wade&luffy 阅读(380) 评论(0) 推荐(0) 编辑
摘要: 高效并发是从JDK 1.5到JDK 1.6的一个重要改进,HotSpot虚拟机开发团队在这个版本上花费了大量的精力去实现各种锁优化技术,如适应性自旋(Adaptive Spinning)、锁消除(Lock Elimination)、锁粗化(Lock Coarsening)、轻量级锁(Lightwei 阅读全文
posted @ 2016-11-10 20:18 wade&luffy 阅读(330) 评论(0) 推荐(0) 编辑
摘要: 线程安全 我们这里讨论的线程安全,就限定于多个线程之间存在共享数据访问这个前提,因为如果一段代码根本不会与其他线程共享数据,那么从线程安全的角度来看,程序是串行执行还是多线程执行对它来说是完全没有区别的。 共享的数据 可以将Java语言中各种操作共享的数据分为以下5类:不可变、绝对线程安全、相对线程 阅读全文
posted @ 2016-11-10 19:46 wade&luffy 阅读(1534) 评论(0) 推荐(0) 编辑
上一页 1 ··· 26 27 28 29 30 31 32 33 34 ··· 45 下一页