![](https://img-blog.csdnimg.cn/20201014180756724.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
jvm
lg70124752
这个作者很懒,什么都没留下…
展开
-
深入理解java虚拟机学习笔记(-)
《深入理解java虚拟机:JVM高级特性与最佳实践》周志明 一书的学习备忘记录 第一章、第二章 1、JIT(Just In Time)编译器,jdk1.2开始内置。 2、jdk1.6在64位的机器上要比在32位的机器上额外增加10%~30%的内存消耗,可以在JDK1.6 Update 14 之后增加 -XX:+UseCompressedOops 3、将堆的最小值-Xms参数与最大值-Xmx...2013-07-20 08:58:01 · 70 阅读 · 0 评论 -
深入理解java虚拟机学习笔记(八)--晚期(运行期)优化
第十一章 晚期(运行期)优化 1、HotSpot同时包含解释器和编译器,HotSpot中内置了两个即时编译器Client Compiler 和 Server Compiler或简称C1和C2编译器(也叫Opto编译器)。用户可以使用-client或-server参数支强制指定虚拟机运行在Client模式还是Server模式。解释器与编译器搭配使用的方式在虚拟机中被称为“混合模式”(Mixed M...2013-08-25 20:56:56 · 157 阅读 · 0 评论 -
深入理解java虚拟机学习笔记(七)--早期(编译期)优化
第十章 早期(编译期)优化 1、概述 java语言的“编译期”是一段“不确定”的操作过程,因为它可能是指一个前端编译器(其实叫“编译器的前端”更准确一些)把*.java转变成*.class文件的过程;也可能是批虚拟机的后端运行期编译器(JIT编译器)把字节码转变成机器码的过程;还可能是指使用静态提前编译器(AOT编译器,Ahead Of Time Compiler)直接把*.java文件编译成...2013-08-11 16:57:57 · 87 阅读 · 0 评论 -
深入理解java虚拟机学习笔记(六)--虚拟机字节码执行引擎
第八章 虚拟机字节码执行引擎 1、栈帧(Stack Frame)是用于支持虚拟机进行方法调用和方法插的数据结构,它是虚拟机运行时数据区中的虚拟机栈(Virtual Machine Stack)的栈元素。栈帧存储了方法的局部变量表、操作数栈、动态连接和方法返回地址等信息。 2、Java虚拟机里面调用字节码指令的方法: invokestatic:调用静态方法。 invokespecial:调用...2013-08-11 16:56:24 · 98 阅读 · 0 评论 -
深入理解java虚拟机学习笔记(五)--虚拟机类加载机制
第七章 虚拟机类加载机制 1、类加载的时机 类从被加载到虚拟机内存中开始,到卸载出内存为止,它的整个生命周期包括了:加载(Loading)、验证(Verification)、准备(Preparation)、解析(Resolution)、初始化(Initialization)、使用(Using)和卸载(Unloading)七个阶段。其中验证、准备和解析三个部分统称为连接(Linking)。 4...2013-08-04 17:07:32 · 73 阅读 · 0 评论 -
深入理解java虚拟机学习笔记(四)--类文件结构
第五章 调优案例分析与实践 1、-XX:+PrintGCTimeStamps 打印GC停顿时间 第六章 类文件结构 1、Class文件是一组以8位字节为基础单位的二进制流,各个数据项目严格按照顺序紧凑地排列在Class文件之中,中间没有添加任何分配符,这使得整个Class文件中存储的内容几乎全部都是程序运行的必要数据,没有空隙存在。当遇到需要占用8位字节以上空间的数据项时,则会按照高位在前的...2013-08-03 22:04:55 · 85 阅读 · 0 评论 -
深入理解java虚拟机学习笔记(三)--虚拟机性能监控与故障处理工具
第四章 1、jps:虚拟机进程状况工具 -q:只输出LVMID,省略主类的名称 -m:输出虚拟机进程启动时传递给主类main()函数的参数 -l:输出主类的全名,如果进程执行的是Jar包,输出Jar路径 -v:输出虚拟机进程启动时JVM参数 2、jstat:虚拟机统计信息监视工具 jstat:是各种运行状态信息的命令行工具,显示本地和远程虚拟机进程中的类装载、内存、垃圾收集、JTA编...2013-07-28 16:07:58 · 118 阅读 · 0 评论 -
深入理解java虚拟机学习笔记(二)--垃圾收集相关的常用参数
UseSerialGC : 虚拟机运行在Client模式下的默认值,打开此形状后,使用Serial + Serial Old 的收集器组合进行内存回收。 UseParNewGC : 虚拟机运行在Client模式下的默认值,打开此开关后,使用Serial + Serial Old的收集器组合进行内存回收 UseParNewGC : 打开此开关后,使用ParNew + Serial Old的收集器...2013-07-20 09:02:21 · 79 阅读 · 0 评论 -
深入理解java虚拟机学习笔记(二)
第三章 1、GC判断回收的算法 a:引用计数算法 给对像中添加一个引用计数器,每当一个地方引用它时,计数器值就加1;当引用失效时,计数器就减1;任何时刻计数器都为0的对象就是不可能再被使用的。(缺点:很难解决对象之间的相互循环引用的问题) b:根搜索算法 通过一系列的名为“GC Roots“的对象作为起始点,从这些节点开始向下搜索,搜索所走过的路径称为引用链(Reference Chai...2013-07-20 09:00:13 · 55 阅读 · 0 评论 -
深入理解java虚拟机学习笔记(九)--java内存模型与线程
第十二章 java内存模型与线程 1、主内存与工作内存 java内存模型的主要目标是定义程序中各个变量的访问规则,即在虚拟机中将变量存储到内存和从内存中取出变量这样的底层细节。此处的变量与java编程中所主的变量略有区别,它包括了实例字段、静态字段和构成数组对象的元素,但是不包括局部变量与方法参数,因为后者是线程私有的,不会被共享,自然就不存在竞争问题。java内存模型规定了所有的变量都存储在...2013-08-25 20:58:48 · 78 阅读 · 0 评论