
Java虚拟机
文章平均质量分 57
冰火两重天
专注于hadoop平台大数据处理的技术对机器学习以及统计学持续的不断深入
展开
-
JVM调优总结(九):新一代的垃圾回收算法
垃圾回收的瓶颈 传统分代垃圾回收方式,已经在一定程度上把垃圾回收给应用带来的负担降到了最小,把应用的吞吐量推到了一个极限。但是他无法解决的一个问题,就是Full GC所带来的应用暂停。在一些对实时性要求很高的应用场景下,GC暂停所带来的请求堆积和请求失败是无法接受的。这类应用可能要求请求的返回时间在几百甚至几十毫秒以内,如果分代垃圾回收方式要达到这个指标,只能把最大堆的设置限制在一个转载 2012-07-26 09:02:12 · 898 阅读 · 0 评论 -
JVM性能调优
JVM性能调优 2011-11-13 02:55:27| 分类: JVM | 标签:jvmgc 性能 |字号大中小订阅一、引言本文的读者是技术支持人员。阅读本文后,你将理解jboss的启动脚本文件(run.sh)中有一系列的JVM配置参数的含义,以及如何调整它们,从而使得MegaEyes中心管理服务器的性能得到优化。MegaEyes中心管理服务器的性转载 2012-11-28 12:24:12 · 1264 阅读 · 0 评论 -
Java SE 6 Instrumentation 功能
2006 年底,Sun 公司发布了 Java Standard Edition 6(Java SE 6)的最终正式版,代号 Mustang(野马)。跟 Tiger(Java SE 5)相比,Mustang 在性能方面有了不错的提升。与 Tiger 在 API 库方面的大幅度加强相比,虽然 Mustang 在 API 库方面的新特性显得不太多,但是也提供了许多实用和方便的功能:在脚本,WebServ转载 2012-12-03 11:20:44 · 767 阅读 · 0 评论 -
JVM优化之调整大内存分页(LargePage)
http://kenwublog.com/tune-large-page-for-jvm-optimization本文将从内存分页的原理,如何调整分页大小两节内容,向你阐述LargePage对JVM的性能有何提升作用,并在文末点明了大内分页的副作用。OK,让我们开始吧!内存分页大小对性能的提升原理首先,我们需要回顾一小部分计算机组成原理,这对理解大内存分页至于JVM性能转载 2012-11-23 23:26:51 · 1073 阅读 · 0 评论 -
基于OS信号实现Java异步通知
http://kenwublog.com/java-asynchronous-notify-based-on-signal本文将结合操作系统的信号机制,来尝试实现一个简单的,不依赖功能环境的Java异步通知功能。没有特殊说明,本文所有的示例,都是基于Linux。信号简介信号是在软件层次上对中断机制的一种模拟,在原理上,一个进程收到一个信号与处理器收到一个中断请求可以转载 2012-11-23 23:31:04 · 1114 阅读 · 0 评论 -
HotSpot虚拟机对象探秘
http://www.infoq.com/cn/articles/jvm-hotspot 请读者首先注意本篇的题目中的限定语“HotSpot虚拟机”,在虚拟机规范中明确写道:“所有在虚拟机规范之中没有明确描述的实现细节,都不应成为虚拟机设计者发挥创造性的牵绊,设计者可以完全自主决定所有规范中不曾描述的虚拟机内部细节,例如:运行时数据区的内存如何布局、选用哪种垃圾收集的算法等”。转载 2012-12-10 22:22:00 · 659 阅读 · 0 评论 -
JVM启动参数
原文:http://www.blogjava.net/midstr/archive/2008/09/21/230265.html 参考:http://www.blogjava.net/bitbit/archive/2009/11/30/304247.html http://www.cnblogs.com/aigongsi/archive/2012/04/06/243转载 2012-07-08 22:48:22 · 775 阅读 · 0 评论 -
Java 6 JVM参数选项大全(中文版)
Java 6 JVM参数选项大全(中文版)作者:Ken WuEmail: ken.wug@gmail.com转载本文档请注明原文链接 http://kenwublog.com/docs/java6-jvm-options-chinese-edition.htm!本文是基于最新的SUN官方文档Java SE 6 Hotspot VM Options 编写的译文。主要介绍JVM中的非稳转载 2013-01-11 22:57:47 · 1242 阅读 · 0 评论 -
理解Heap Profling名词-Shallow和Retained Sizes
http://kenwublog.com/understand-shallow-and-retained-size-in-hprofling 所有包含Heap Profling功能的工具(MAT, Yourkit, JProfiler, TPTP等)都会使用到两个名词,一个是Shallow Size,另一个是 Retained Size.这是两个在平时不太常见的名词,本文会对这两转载 2013-01-15 17:47:36 · 834 阅读 · 0 评论 -
Java虚拟机结构
数据类型 Java虚拟机可以操作的数据类型分为两类:原始类型(Primitive Types)和引用类型(Reference Type)。这两种类型的值用于变量赋值、参数传递、方法返回和运算操作。 Java虚拟机希望尽可能多的类型检查能在程序运行之前完成,亦即编译器应当在编译期间尽最大努力完成可能的类型检查,使得虚拟机在运行期间无需进行这些操作。虚拟机的字节码指令本身就可以确定原创 2013-01-28 21:20:13 · 853 阅读 · 0 评论 -
Java字节码指令集简介
Java虚拟机指令由一个字节长度的、代表某种特定含义的操作码(Opcode)以及其后的零个至多个代表此操作参数的操作数构成。虚拟机中许多指令并不包含操作数,只有一个操作码。若忽略异常,JVM解释器使用一下为代码即可有效工作。do{ 自动计算PC寄存器以及从PC寄存器的位置取出操作码 if(存在操作数) 取出操作数; 执行操作码所定义的操作;}while(处理下一次循环原创 2013-02-08 10:26:20 · 3113 阅读 · 1 评论 -
BTrace监控工具
http://kenai.com/projects/btrace/pages/DeveloperGuidehttp://kenai.com/projects/btrace/pages/UserGuide原创 2012-11-24 21:44:51 · 896 阅读 · 0 评论 -
Java Class文件结构
http://caoyaojun1988-163-com.iteye.com/blog/1114420Java class 文件1、Class文件是什么:class文件是java程序二进制文件的精确的定义,每一个class的文件都对应一个类或则接口,class文件是JVM真正能读懂的文件格式。2、Class文件与java的关系:一般的讲class文件由java的类文件编译而来,转载 2012-08-21 09:55:58 · 698 阅读 · 0 评论 -
JVM调优(六):分代垃圾回收
分代垃圾回收流程示意 选择合适的垃圾收集算法串行收集器 用单线程处理所有垃圾回收工作,因为无需多线程交互,所以效率比较高。但是,也无法使用多处理器的优势,所以此收集器适合单处理器机器。当然,此收集器也可以用在小数据量(100M左右)情况下的多处理器机器上。可以使用-XX:+UseSerialGC打开。转载 2012-07-25 18:21:32 · 1851 阅读 · 0 评论 -
JVM GC组合方式
转载 2012-07-26 12:45:02 · 1083 阅读 · 0 评论 -
JVM调优(五):分代收集器详述
为什么要分代 分代的垃圾回收策略,是基于这样一个事实:不同的对象的生命周期是不一样的。因此,不同生命周期的对象可以采取不同的收集方式,以便提高回收效率。 在Java程序运行的过程中,会产生大量的对象,其中有些对象是与业务信息相关,比如Http请求中的Session对象、线程、Socket连接,这类对象跟业务直接挂钩,因此生命周期比较长。但是还有一些对象,主要是转载 2012-07-25 18:14:09 · 1190 阅读 · 0 评论 -
深入探讨 Java 类加载器
类加载器是 Java 语言的一个创新,也是 Java 语言流行的重要原因之一。它使得 Java 类可以被动态加载到 Java 虚拟机中并执行。类加载器从 JDK 1.0 就出现了,最初是为了满足 Java Applet 的需要而开发出来的。Java Applet 需要从远程下载 Java 类文件到浏览器中并执行。现在类加载器在 Web 容器和 OSGi 中得到了广泛的使用。一般来说,Java 应用转载 2012-07-10 17:23:43 · 543 阅读 · 0 评论 -
Java代码编译和执行的整个过程
http://blog.youkuaiyun.com/cutesource/article/details/5904542Java代码编译是由Java源码编译器来完成,流程图如下所示:Java字节码的执行是由JVM执行引擎来完成,流程图如下所示: Java代码编译和执行的整个过程包含了以下三个重要的机制:Java源码编译机制类加载机制类执行机制Java源码编译机制J转载 2012-08-14 21:43:33 · 690 阅读 · 0 评论 -
JVM基本结构
http://blog.youkuaiyun.com/cutesource/article/details/5904501从Java平台的逻辑结构上来看,我们可以从下图来了解JVM:从上图能清晰看到Java平台包含的各个逻辑模块,也能了解到JDK与JRE的区别对于JVM自身的物理结构,我们可以从下图鸟瞰一下:对于JVM的学习,在我看来这么几个部分最重要:转载 2012-08-14 21:45:45 · 626 阅读 · 0 评论 -
JVM调优总结(八)-典型配置
常见配置汇总 堆设置 -Xms:初始堆大小 -Xmx:最大堆大小 -XX:NewSize=n:设置年轻代大小 -XX:NewRatio=n:设置年轻代和年老代的比值。如:为3,表示年轻代与年老代比值为1:3,年轻代占整个年轻代年老代和的1/4 -XX:SurvivorRatio=n:年轻代中Eden区与两个Survivor区的比值。转载 2012-07-25 18:35:01 · 597 阅读 · 0 评论 -
JVM调优总结(一):基本概念
数据类型 Java虚拟机中,数据类型可以分为两类:基本类型和引用类型。基本类型的变量保存原始值,即:他代表的值就是数值本身;而引用类型的变量保存引用值。“引用值”代表了某个对象的引用,而不是对象本身,对象本身存放在这个引用值所表示的地址的位置。基本类型包括:byte,short,int,long,char,float,double,Boolean,returnAddress转载 2012-07-25 17:30:04 · 776 阅读 · 0 评论 -
JVM调优总结(七)-典型配置
堆大小设置年轻代的设置很关键JVM中最大堆大小有三方面限制:相关操作系统的数据模型(32-bt还是64-bit)限制;系统的可用虚拟内存限制;系统的可用物理内存限制。32位系统下,一般限制在1.5G~2G;64为操作系统对内存无限制。在Windows Server 2003 系统,3.5G物理内存,JDK5.0下测试,最大可设置为1478m。典型设置:java转载 2012-07-25 18:29:18 · 819 阅读 · 0 评论 -
JVM调优(二):基本概念
Java对象的大小 基本数据的类型的大小是固定的,这里就不多说了。对于非基本类型的Java对象,其大小就值得商榷。 在Java中,一个空Object对象的大小是8byte,这个大小只是保存堆中一个没有任何属性的对象的大小。看下面语句:Object ob = new Object(); 这样在程序中完成了一个Java对象的生命,但是它所占的空转载 2012-07-25 17:34:24 · 774 阅读 · 0 评论 -
JVM调优(三):基本垃圾回收算法
转载:http://pengjiaheng.iteye.com/?page=2可以从不同的的角度去划分垃圾回收算法:按照基本回收策略分引用计数(Reference Counting):比较古老的回收算法。原理是此对象有一个引用,即增加一个计数,删除一个引用则减少一个计数。垃圾回收时,只用收集计数为0的对象。此算法最致命的是无法处理循环引用的问题。 标转载 2012-07-25 18:05:14 · 1504 阅读 · 0 评论 -
JVM调优(四):垃圾回收面临的问题
如何区分垃圾 上面说到的“引用计数”法,通过统计控制生成对象和删除对象时的引用数来判断。垃圾回收程序收集计数为0的对象即可。但是这种方法无法解决循环引用。所以,后来实现的垃圾判断算法中,都是从程序运行的根节点出发,遍历整个对象引用,查找存活的对象。那么在这种方式的实现中,垃圾回收从哪儿开始的呢?即,从哪儿开始查找哪些对象是正在被当前系统使用的。上面分析的堆和栈的区别,其中栈转载 2012-07-25 18:11:41 · 1080 阅读 · 0 评论 -
Java虚拟机编译
指令格式如下: [ [...]] [] 是code[]数组中的指令的操作码索引。此处的code[]数组就是存储当前方法的JVM字节码的Code属性中的code数组。也可以认为是相对于方法起始处的字节偏移量。为指令的操作码的助记符号,是指令的操作数,一条指令可以有0到多个操作数。每条指令之前的可以作为控制转移指令的条转目标。需要注意的是,JVM控制转移指令的实际操作数是在当前指令的操作码原创 2013-02-10 20:19:38 · 1025 阅读 · 0 评论