- 浏览: 479474 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
alvin198761:
renzhengzhi 写道我参与过12306余票查询系统的开 ...
别给12306 辩解了 -
renzhengzhi:
我参与过12306余票查询系统的开发,用户请求被前面3层缓存拦 ...
别给12306 辩解了 -
renzhengzhi:
写的很好。
JAVA线程dump的分析 -
liyonghui160com:
说好的附件呢
分布式服务框架 Zookeeper -- 管理分布式环境中的数据 -
ghpaas:
orbeon作为xforms标准的实现,不论其设计器还是运行时 ...
XForms 1.1 中文翻译—第1章 关于XForms标准
在IBM的虚拟机官方指导文档中明确指出,禁止将虚拟机的最大值和最小值设置为相等,否则会导致以下2个后果 <1>极大的增加垃圾回收时间,影响系统性能 <2>造成系统中存在内存碎片。 然而,BEA推荐将最小堆大小和最大堆大小设置为同一值,因为这样可以避免浪费用于时常调整堆大小所需的 VM 资源。 同样是堆大小,却有两种不同的说法,有必要来分析一下。 先看IBM的文章摘录: IBM的虚拟机官方指导文档 Initial and maximum heap sizes When you have established the maximum heap size that you need, you might want to set the minimum heap size to the same value; for example, -Xms 512M -Xmx 512M. Using the same values is not usually a good idea, because it delays the start of garbage collection until the heap is full. The first time that the Garbage Collector runs, therefore, becomes a very expensive operation. Also, the heap is most likely to be very fragmented when a need to do a heap compaction occurs. Again, this is a very expensive operation. The recommendation is to start your application with the minimum heap size that it needs. When it starts up, the Garbage Collector will run often and, because the heap is small, efficiently. The Garbage Collector takes these steps: If the Garbage Collector finds enough garbage, it exits. If it cannot find enough garbage, it goes to the next step. The Garbage Collector runs compaction. If it cannot find enough garbage, it goes to the next step. The Garbage collector expands the heap. Therefore, an application normally runs until the heap is full. Then, successive garbage collection cycles recover garbage. When the heap is full of reachable objects, the Garbage Collector compacts the heap. If and when the heap is full of reachable objects and cannot be compacted, the Garbage Collector expands the heap size. From the above description, you can see that the Garbage Collector compacts the heap as the needs of the application rise, so that as the heap expands, it expands with a set of compacted objects in the bottom of the original heap. This is an efficient way to manage the heap, because compaction runs on the smallest-possible heap size at the time that compaction is found to be necessary. Compaction is performed with the minimum heap sizes as the heap grows. Some evidence exists that an application’s initial set of objects tends to be the key or root set, so that compacting them early frees the remainder of the heap for more short-lived objects. Eventually, the JVM has the heap at maximum size with all long-lived objects compacted at the bottom of the heap. The compaction occurred when compaction was in its least expensive phase. The overheads of expanding the heap are almost trivial compared to the cost of collecting and compacting a very large fragmented heap. 文档里写到,设置-Xms和-Xmx一样大会耽误垃圾回收的开始直到堆满,这样第一次垃圾回收就会变成非常昂贵的操作。推荐把-Xms设置为应用所需的最小值,这样会产生高效的垃圾回收。 关于垃圾收集器: 1 如果找到足够的垃圾, 这些垃圾释放后的空间够用 那么就不进行压缩。 2 如果找到的足够的垃圾,但这些垃圾释放后空间不够用,那就进行压缩。 3 如果找到的垃圾不够多, 即使压缩后的空间也不够用 那么进行堆扩展。 之所以两种虚拟机的设置的方法存在冲突,主要是因为垃圾回收机制的不同。 Sun: GC策略默认是复制、分代算法。也就是说,它会将heap分成不同的几个区,譬如Solaris JVM中最上面有两个大小相等的区。GC时刻,将一个区的存活对象复制到另外一个对等区,垃圾对象就算遗弃了。这样在heap里面,就不存在碎片问题。 IBM: 默认GC策略并没有采取复制、分代方式,而是采用了标记-清除-压缩的方式。并且,它不像Sun的JVM那样,有个单独的方法区,它的方法区就放在Java堆空间里面。 前面提到过:IBM禁止将虚拟机的最大值和最小值设置为相等是因为会极大的增加垃圾回收时间。那难道Sun的虚拟机就不会造成垃圾时间过长吗? 是因为Sun的虚拟机的垃圾回收方式是分代收集,分代收集本身是并发的,是多线程同时进行,而且一般minor gc的时间很短,只有major gc的时间可能比较长 但是major gc 发生在tunured空间 这个空间大小一般也就是堆的一半。所以呢,Sun虚拟机可以将-Xms和-Xmx设置为一样大小以节约堆延伸和收缩所需的资源。 IBM虚拟机之所以不设置为一样大小,除了怕影响垃圾回收的效率(要在当前堆耗尽,也就是遇到AF才会GC,如果初始值和最大值一样,那么很久才会进行,而且第一次GC就是大范围的)。除了这个原因,如果堆是从很小慢慢进行扩展的话,那么后来扩展的堆在进行压缩的时候 ,是不需要对前面已经压缩的堆进行过多操作的,换句话说,如果是初始堆很大的话 那么以后每次压缩的时间都会很长。 出处:http://www.tonyxu.net/java/201003129/ibm-sun-jdk.html
发表评论
-
.NET开源核心运行时,且行且珍惜
2014-12-25 15:39 1859背景 2014年11月12日,ASP.NET之父、微软云 ... -
常用 Java Profiling 工具的分析与比较
2010-08-15 22:04 1180相对于静态代码分析,Profiling 是通过收集程序运行 ... -
监控系统内存
2010-07-01 14:15 1214public CollectorThread(int seco ... -
Debugging the JNI
2010-06-18 14:03 996If you think you have a JNI p ... -
JNI原理2
2010-06-18 13:31 159915.2 调用C程序 JNI规范 ... -
JNI原理1
2010-06-18 13:14 1260在某些Java的忠实支持者眼中,JNI(Java Nati ... -
JNI的crash终于搞定<转>
2010-06-18 13:08 1677今天终于搞定困扰我一周的一个问题了。我们的算法通过jni封装, ... -
java的volatile是什么意思
2010-04-20 15:39 1334我们知道,在Java中设置变量值的操作,除了long和d ... -
Concurrent kickoff
2010-04-19 15:55 1384This example shows you the ... -
如何在IBM JDK 1.4.2的环境中避免Java堆空间的碎片问题
2010-04-19 15:48 874用户在使用WebSphere Applic ... -
Concurrent mark
2010-04-15 19:39 1015Concurrent mark gives reduced ... -
Java 技术,IBM 风格: 垃圾收集策略,第 1 部分
2010-04-15 16:51 984可以使用 4 种不同的策略配置 IBM Developer ... -
Java 网页浏览器组件介绍
2010-04-12 23:44 1503前言 在使用 Java 开发客户端程序时,有时会需要在界 ... -
利用 Java dump 进行 JVM 故障诊断
2010-04-06 16:54 1966引言 对于大型 java 应用程序来说,再精细的测试都难 ... -
IBM JVM垃圾回收原理——1
2010-04-06 15:42 1615原文下载:IBM Garbage Collection ... -
Java 理论与实践: 垃圾收集简史
2010-04-06 14:34 817垃圾收集的好处是无 ... -
关注性能: 调优垃圾收集
2010-04-06 14:08 828随着网志作为公共日 ... -
Java 理论与实践: JVM 1.4.1 中的垃圾收集
2010-04-06 10:42 885老对象和年轻对象 ... -
优化 Java 垃圾收集器改进系统性能
2010-04-02 16:05 902From http://www.ibm.com/de ... -
搞懂java中的synchronized关键字
2010-04-01 19:54 812实际上,我关于java的基 ...
相关推荐
IBM和SUN JDK都是Java开发的重要工具,它们都提供了对XML解析的支持。本文将深入探讨IBM JDK与SUN JDK在XML解析方面的异同以及相关API的使用。 IBM JDK和SUN JDK在XML解析上的主要组件包括DOM(Document Object ...
IBM的JVM在性能上通常优于标准的Sun JDK,特别是在服务器端应用和多线程环境中。 2. **Class Libraries**:IBM JDK 1.5包含了Java标准版(Java SE)的类库,这些类库提供了各种功能,如输入/输出处理、网络通信、多...
对于初学者,建议深入学习Java语言的基础知识,掌握如何配置JDK环境变量,了解编译和运行Java程序的步骤,以及如何利用IBM JDK提供的工具进行调试和性能分析,这样将有助于你更好地驾驭这个强大的开发平台。
JDK的种类:最主流的JDK是Sun公司发布的JDK,除了Sun之外,还有很多公司和组织都开发了自己的JDK,例如IBM公司开发的JDK,BEA公司的Jrocket,还有GNU组织开发的JDK等等。其中IBM的JDK包含的JVM(Java Virtual ...
IBM JDK6 SR15是IBM公司为Java开发者提供的Java Development Kit的一个特定版本,适用于Sun Microsystems (现Oracle) JDK 6 Update 71的兼容性需求。这个安装版包含了IBM对Java平台的定制优化,旨在提高性能、可靠性...
附件为 ibm_jdk1.7.1_x86.part2.rar,还有一个附件 ibm_jdk1.7.1_x86.part1.rar两个压缩包在一起解压才正常。已测试
JDK是 Java 语言的软件开发工具包,主要用于移动设备、嵌入式设备上的java应用程序。JDK是整个java开发的核心,它包含了JAVA的运行环境(JVM+Java系统类库)和JAVA工具。此包已经合并sun源码,直接导入即可。
这个版本的IBM JDK是基于Sun Microsystems(后被Oracle收购)的Java Development Kit (JDK) 1.5.0,也被称为Java SE 5.0。它提供了完整的Java编程环境,包括编译器、虚拟机、类库以及其他必要的工具,使得开发者能够...
IBM JDK (Java Development Kit) 是IBM公司提供的Java运行时环境,主要用于支持IBM特定的系统和应用服务器,如WebSphere。本攻略将指导你如何在非IBM硬件上安装IBM JDK 1.5 for Windows。 ### 1. 下载IBM JDK 首先...
最主流的JDK是Sun公司发布的JDK,除了Sun之外,还有很多公司和组织都开发了自己的JDK,例如IBM公司开发的JDK,BEA公司的Jrocket,还有GNU组织开发的JDK等等。 其中IBM的JDK包含的JVM(Java Virtual Machine)运行效率要...
JDK 1.8.0_25 64位 官方正式版下载 JDK是整个Java的核心,包括了...最主流的JDK是Sun公司发布的JDK,除了Sun之外,还有很多公司和组织都开发了自己的JDK,例如IBM公司开发的JDK,BEA公司的Jrocket,还有GNU组织开发的JDK
最主流的JDK是Sun公司发布的JDK,除了Sun之外,还有很多公司和组织都开发了自己的JDK,例如IBM公司开发的JDK,BEA公司的Jrocket,还有GNU组织开发的JDK等等。 其中IBM的JDK包含的JVM(Java Virtual Machine)运行效率...
最主流的JDK是Sun公司发布的JDK,除了Sun之外,还有很多公司和组织都开发了自己的JDK,例如IBM公司开发的JDK,BEA公司的Jrocket,还有GNU组织开发的JDK等等。 其中IBM的JDK包含的JVM(Java Virtual Machine)运行效率...
最主流的JDK是Sun公司发布的JDK,除了Sun之外,还有很多公司和组织都开发了自己的JDK,例如IBM公司开发的JDK,BEA公司的Jrocket,还有GNU组织开发的JDK等等。 其中IBM的JDK包含的JVM(Java Virtual Machine)运行效率...
最主流的JDK是Sun公司发布的JDK,除了Sun之外,还有很多公司和组织都开发了自己的JDK,例如IBM公司开发的JDK,BEA公司的Jrocket,还有GNU组织开发的JDK等等。 其中IBM的JDK包含的JVM(Java Virtual Machine)运行效率...
最主流的JDK是Sun公司发布的JDK,除了Sun之外,还有很多公司和组织都开发了自己的JDK,例如IBM公司开发的JDK,BEA公司的Jrocket,还有GNU组织开发的JDK等等。 其中IBM的JDK包含的JVM(Java Virtual Machine)运行效率要...
最主流的JDK是Sun公司发布的JDK,除了Sun之外,还有很多公司和组织都开发了自己的JDK,例如IBM公司开发的JDK,BEA公司的Jrocket,还有GNU组织开发的JDK等等。其中IBM的JDK包含的JVM(Java Virtual Machine)运行效率...
最主流的JDK是Sun公司发布的JDK,除了Sun之外,还有很多公司和组织都开发了自己的JDK,例如IBM公司开发的JDK,BEA公司的Jrocket,还有GNU组织开发的JDK等等。 其中IBM的JDK包含的JVM(Java Virtual Machine)运行效率...
JDK是整个Java的核心,包括了Java运行环境(Java Runtime ...最主流的JDK是Sun公司发布的JDK,除了Sun之外,还有很多公司和组织都开发了自己的JDK,例如IBM公司开发的JDK,BEA公司的Jrocket,还有GNU组织开发的JDK等等.