JVM
huali_cc
这个作者很懒,什么都没留下…
展开
-
jvm学习笔记(1)class文件
简述 class文件是什么?稍微接触过java的同学都会说:就是java源文件编译后的.class文件。这句话虽然对,但是不够准确。其他语言,例如scala,jruby等,都可以编译出class文件。class文件是能被jvm识别和运行的一种文件格式。它是八位的二进制流文件。今天就跟大家一起学习class文件的格式 整体结构 用ultraedit等工具打开class文件,看到的都转载 2011-12-14 17:25:39 · 210 阅读 · 0 评论 -
jvm学习笔记(2)多线程的相关原理
简介 本文是尝试从虚拟机的角度来分析java线程的一些本质 线程模型 java的线程模型可以通过下图来说明: 一个对象都有一个相关的锁,每次只能由获得它的一个线程来操作。获得它的线程可以wait,放弃锁,进入等待区域,待被唤醒notify后,它会重新查看锁的状态,参与锁的竞争 虚拟机实现 查看class文件的汇编代码,可以看到,进入同步区域和退出同步区域分别由两转载 2011-12-14 17:26:31 · 218 阅读 · 0 评论 -
jvm学习笔记(6)类加载机制
简述 我们要运行java程序,必须保证jvm已经加载类所需的类。这个过程是怎样的呢 类的生命周期 包括了装载,连接(包括验证、准备和解析)和初始化 加载 将二进制字节码读入jvm。包括以下阶段: 1.通过类的全限定名获得定义此类的二进制数据流 2.将字节流转化为方法区的内部数据结构 3.在jvm堆中生成java.lang.Class实例,成为java程序与内转载 2011-12-14 17:29:25 · 176 阅读 · 0 评论 -
jvm学习笔记(4)垃圾回收算法分析
简述: 垃圾回收算法有很多种,每种有各自的适用场合,各有千秋,如何在不同的场合搭配使用是我们要考虑的问题 引用计数 这是最简单最原始的算法。原理很简单,对象生成后,有一个相关联的计数器,当有一个地方引用时,计数器加1;当引用失效时,计数器减1。jvm定期扫描对象时,发现计数器为0的对象就可以清除。这个算法的特点是实现简单,速度快。不足之处在于:每次分配和指针操作都需要额外的操作来转载 2011-12-14 17:27:56 · 249 阅读 · 0 评论 -
jvm学习笔记(3)内存管理
整体架构 当一个java类文件被jvm装载进来,就需要创建对象,涉及到内存管理了。先来看看jvm内部的体系结构 pc寄存器 对汇编有一定了解的同学都明白这个概念。我们可以简单把它看做是当前线程所执行的字节码的行号。有什么用呢。当执行完一条指令的时候,需要跳转到下一条指令,就得靠它了 java虚拟机栈 是线程私有的,跟线程的生命周期相同。描述的是一个java方法执行转载 2011-12-14 17:27:12 · 314 阅读 · 0 评论 -
jvm学习笔记(5)垃圾收集器介绍
简述: 上一篇系统学习了各种垃圾算法。现在就看看jvm(HopSpot)提供了那些垃圾收集器,怎样搭配使用。先回忆了,然后思考以下问题:新生代和老年代分别用什么算法合适? Serial收集器 略懂英文的同学大概明白这个词的意思,串行,连续的。没错,这个收集器很简单,当要进行gc时,就暂停所有线程。用复制算法执行完,继续所有线程。又用餐巾纸的例子来说明,清洁大妈高喊一声“stop”转载 2011-12-14 17:28:41 · 260 阅读 · 0 评论 -
jvm学习笔记总结
为什么要深入学习jvm? 从事java开发有几年的时间了,以前对jvm了解不够深入。项目中遇到一些问题,深刻体会到不是代码层级可以解决的。很多问题难以解决之处在于你发现不了问题源头。例如服务器的tps上不去,瓶颈在哪里?程序内存溢出,什么原因造成的?如何监控程序运行的状况?为此,特意抽出时间,系统学习了jvm的相关原理,希望更深刻得了解java运行的机制。总之,学习jvm,能让你站更高处看问转载 2011-12-14 17:30:07 · 188 阅读 · 0 评论