vm
青葱暖咖啡
知识就是力量
展开
-
线程安全与锁优化
线程安全与锁优化当多个线程访问一个对象时,如果不用考虑这些线程在运行时环境下的调度和交替执行,也不需要进行额外的同步,或者在调用方进行任何其他的协调操作,调用这个对象的行为都可以获得正确的结果,那这个对象就是线程安全的按照线程安全的“安全程度”由强至弱来排序,将Java语言中各种操作共享的数据分为以下五类:不可变、绝对线程安全、相对线程安全、线程兼容和线程对立。1.不可变JDK 1.5以后...原创 2020-01-13 16:48:52 · 103 阅读 · 0 评论 -
Java内存模型与线程
Java内存模型与线程每秒事务处理数(Transactions Per Second,TPS)、Java语言和虚拟机提供了许多工具,把并发编程的门槛降低了不少。另外,各种中间件服务器、各类框架12.2 硬件的效率与一致性现代计算机系统都不得不加入一层读写速度尽可能接近处理器运算速度的高速缓存(Cache)来作为内存与处理器之间的缓冲:为了解决一致性的问题,需要各个处理器访问缓存时都遵循一...原创 2020-01-10 16:34:12 · 134 阅读 · 0 评论 -
晚期(运行期)优化
晚期(运行期)优化概述最初是解释执行的;在运行时,虚拟机将会把热点代码编译成与本地平台相关的机器码,并进行各种层次的优化,完成这个任务的编译器称为即时编译器(Just In TimeCompiler,下文中简称JIT编译器)。JIT不是虚拟机必需部分,但是其性能的好坏、代码优化程度的高低却是衡量一款商用虚拟机优秀与否的最关键的指标之一。本章内容针对HOTSPOT虚拟机。11.2 HotSp...原创 2020-01-10 16:32:02 · 183 阅读 · 0 评论 -
早期(编译期)优化
早期(编译期)优化10.1概述Java语言的“编译期”是一段“不确定”的操作过程,因为它可能是1)指一个前端编译器(其实叫“编译器的前端”更准确一些)把*.java文件转变成*.class文件的过程;如Sun的Javac、Eclipse JDT中的增量式编译器(ECJ)2)也可能是指虚拟机的后端运行期编译器(JIT编译器,Just In Time Compiler)把字节码转变成机器码的过...原创 2020-01-10 16:31:31 · 96 阅读 · 0 评论 -
类加载及执行子系统的案例与实战
类加载及执行子系统的案例与实战在Class文件格式与执行引擎这部分里,用户的程序能直接影响的内容并不太多。能通过程序进行操作的,主要是字节码生成与类加载器这两部分的功能。.1 Tomcat:正统的类加载器架构主流的Java Web服务器,如Tomcat、Jetty、WebLogic、WebSphere或其他笔者没有列举的服务器,都实现了自己定义的类加载器在Tomcat目录结构中,一共四组,...原创 2020-01-10 16:31:08 · 167 阅读 · 0 评论 -
虚拟机字节码执行引擎
虚拟机字节码执行引擎局部变量表中变量slot是否被回收:是否还有关于此变量的数组对象的引用;如果一个局部变量定义了但没有赋初始值是不能使用的,此不同于类变量;操作数栈,后入先出最大深度也在编译的时候被写入到Code属性的max_stacks数据项之中在概念模型中,两个栈帧作为虚拟机栈的元素,相互之间是完全独立的。但是大多数虚拟机的实现里都会做一些优化处理,令两个栈帧出现一部分重叠2....原创 2020-01-10 16:30:43 · 83 阅读 · 0 评论 -
虚拟机类加载机制
虚拟机类加载机制类从被加载到虚拟机内存中开始,到卸载出内存为止,它的整个生命周期包括了:加载(Loading)、验证(Verification)、准备(Preparation)、解析(Resolution)、初始化(Initialization)、使用(Using)和卸载(Unloading)七个阶段。其中验证、准备和解析三个部分统称为连接(Linking)在Java语言里面,类型的加载和连接...原创 2020-01-10 16:29:58 · 128 阅读 · 0 评论 -
类文件结构
类文件结构代码编译的结果从本地机器码转变为字节码,是存储格式发展的一小步,却是编程语言发展的一大步1 概述越来越多的程序语言选择了与操作系统和机器指令集无关的、平台中立的格式作为程序编译后的存储格式2 无关性的基石在Java虚拟机之上运行的语言,如Clojure、Groovy、JRuby、Jython、Scala3 Class类文件的结构Class文件是一组以8位字节为基础单位的二进...原创 2020-01-10 16:29:22 · 160 阅读 · 0 评论 -
调优案例分析与实战
调优案例分析与实战1 高性能硬件上的程序部署策略2 集群间同步导致的内存溢出3 堆外内存导致的溢出错误4 外部命令导致系统缓慢5 服务器JVM进程崩溃3 实战:Eclipse运行速度调优1.Eclipse:由于安装的插件比较大(如Klocwork、ClearCase LT等)、代码也很多,启动Eclipse直到所有项目编译完成需要四五分钟配置文件eclipse. ini;代码清单5...原创 2020-01-10 16:28:38 · 113 阅读 · 0 评论 -
虚拟机性能监控与故障处理工具
虚拟机性能监控与故障处理工具jdk1.5的虚拟机,程序启动时请添加参数“-Dcom.sun.management.jmxremote”开启JMX管理功能1 jps:虚拟机进程状况工具功能:可以列出正在运行的虚拟机进程,并显示虚拟机执行主类(Main Class,main()函数所在的类)的名称,以及这些进程的本地虚拟机的唯一ID(LVMID)本地虚拟机进程的LVMID,等于操作系统的进程I...原创 2020-01-10 16:28:06 · 145 阅读 · 0 评论 -
垃圾收集器与内存分配策略
垃圾收集器与内存分配策略针对对象:Java堆,一个接口中的多个实现类需要的内存可能不一样,一个方法中的多个分支需要的内存也可能不一样,我们只有在程序处于运行期间时才能知道会创建哪些对象,这部分内存的分配和回收都是动态的1.引用计数应用案例:微软的COM(Component Object Model)技术、使用ActionScript3的FlashPlayer、Python语言以及在游戏脚本领...原创 2020-01-10 16:27:21 · 147 阅读 · 0 评论