读书笔记
江城老金
这个作者很懒,什么都没留下…
展开
-
《深入理解JAVA虚拟机》:3、java内存区域
一、java的运行时数据区域java的运行时数据区域共分为以下两部份:第一部份:1)方法区2)虚拟机栈3)本地方法栈4)堆5)程序计数器第二部份:1)执行引擎(执行"本地库接口")2)本地库接口(调用本地方法库)1、程序计数器在任何一个确定的时刻,一个处理器(对于多核处理器来说是一个内核)只会执行一条线程中的指令。因此,为了线程切换后能恢原创 2016-10-09 23:05:16 · 277 阅读 · 0 评论 -
《深入理解JAVA虚拟机》:6、调优案例分析与实战
在高性能硬件上部署程序,目前主要有两种方式: ——通过64位JDK来使用大内存 ——使用若干个32位虚拟机建立逻辑集群来利用硬件资源控制Full GC频率的关键是看应用中绝大多数对象能否符合“朝生夕死”的原则,即大多数对象的生存时间不应该太长,尤其是不能产生成批量的、长生存时间的大对象,这样才对保障老年代空间的稳定。如果计划使用64位JDK来管理大内存,还需要考虑下面可能面临的问题: ——内存原创 2016-10-23 11:37:20 · 657 阅读 · 0 评论 -
《深入理解JAVA虚拟机》:7、类文件结构
类文件结构在java语言发展之初,设计者们就曾经考虑过并实现了让其他语言运行在java虚拟机上的可能性,他们在发布规范文档的时候,也刻意把java的规范拆分成了java语言规范及java虚拟机规范。java语言中的各种变量、关键字和去处符号的语义最终都是由多条字节码命令组合而成的,因此字节码命令所能提供的语义描述能力肯定会比java语言本身更强大。因此有一些java语言本身无法有效支持的语言特性并不原创 2016-10-23 12:52:43 · 386 阅读 · 0 评论 -
《深入理解JAVA虚拟机》:4、垃圾收集与内存分配策略
为什么要去了解GC和内存分配? 当需要排查各种内存溢出、内存泄漏时,当垃圾收集成为系统达到更高并发量的瓶颈时,我们就需要对这些自动化的技术实施必要的监控和调节。 程序计数器、虚拟机栈、本地方法栈三个区域随线程而生,随线程而灭。如何判断对象存活状态引用计数法 给对象中添加一个引用计数器,每当有一个地方引用它时,计数器值就加1;当引用失效时,计数器值就减1;任何时刻计数器值为0的对原创 2016-10-15 14:25:09 · 334 阅读 · 0 评论 -
《深入理解JAVA虚拟机》:5、虚拟机性能监控与故障处理工具
jdk的命令行工具- jps- jstat- jinfo- jmap- jhat- jstackjps 虚拟机进程状况工具。 主要参数: -q -m -l -vjstat 虚拟机统计信息监视工具 -class -gc -gccapacity -gctuil -gccause -gcnew原创 2016-10-17 22:47:22 · 392 阅读 · 0 评论 -
《深入理解JAVA虚拟机》:8、虚拟机类加载机制
类的加载时机 类从被加载到虚拟机内存中开始,到卸载出内存为止,它的整个生命周期包括了:加载、验证、准备、解析、初始化、使用、和卸载七个阶段。 顺序:加载——》验证——》准备——》解析——》初始化——》使用——》卸载 对于初始化阶段,虚拟机规范则是严格规定了有且只有四种情况必须对类进行“初始化”(而加载、验证、准备自然要在此之前开始): 1)到遇new、getstatic、原创 2016-10-30 22:40:14 · 293 阅读 · 0 评论