今天一个同事让我帮忙分析一下他们的系统,系统经常出现很多heapdump文件,于是我拿到他们的文件进行了分析
发现设置的内存最大最小内存是相同的,但是JVM是IBM的,可能就会出现问题
Sun的虚拟机,一般可以设置heap最大最小值一致,也是推荐的做法。因为Sun GC策略默认采用的是复制、分代算法。也就是说它会将heap分成不同的几个区,例如Solaris
JVM中最上面有两个大小相等的区。GC时刻,将一个区的存活对象复制到另外一个对等区,垃圾对象就算遗弃了。这样在heap里面,就不存在碎片问题。另外,根据Java对象的存活期不同,将之转移到不同的区(Tenured区),存活最长的在最底部(火车算法),这也就是分代模型
IBM的JVM,情况就完全不一样。默认GC策略并没有采取复制、分代。它不像Sun的JVM那样,有个单独的方法
区,它的方法区就放在Java Heap里面。JVM规范里面并没有要求方法区的必须存放的位置,因为它只是一个JVM实现问题,在IBM的JVM里面,这些对象一般分配在称为k簇和p簇里(簇又是属于Heap),而后者一般是临时在
heap里面申请。并且,这些cluster是不能GC,或是被移动重排的(Compact过程)。这就导致Java
Heap里面就如同马蜂窝,但不同的蜂孔又不能合并,于是,当我们程序里面产生一个大对象,譬如2M的数组(数组必须分配在连续的内存区)时,就没有可分
配空间了,于是就报告OOM。这些不能被移动的簇就称为所谓的碎片。此时,JVM的Heap利用率可能不到50%。
所以需要根据不同的jvm进行不同的参数设置,如果是sun的,建议使用最大最小内存一样的方式,如果是 IBM的,就建议不要将最大最下内存设置成一样的,这样可以减少出现OOM的机率。
下一步把通过jca,ja,ha的方式分析的过程,由于今天拿到的heapdump文件的内容缺少gc的日志,所以等他们发过来新的heapdump文件后在整理分析过程。
分享到:
相关推荐
### JVM参数设置详解 在Java应用开发与维护过程中,JVM(Java虚拟机)的配置至关重要,它直接影响到应用程序的性能表现与稳定性。本文将基于提供的文件内容,深入解析Linux环境下JVM的基本参数设置方法及原理。 ##...
JVM参数设置是优化Java应用性能的关键环节,它可以帮助我们控制JVM的行为,如内存分配、垃圾回收策略、线程调度等。下面将详细介绍一些重要的JVM参数及其作用。 1. 内存设置: - `-Xms` 和 `-Xmx`:这两个参数用于...
JAVA应用JVM原理及参数调优深入讲解视频.1 JAVA应用JVM原理及参数调优深入讲解视频.2 JAVA应用JVM原理及参数调优深入讲解视频.3 JAVA应用JVM原理及参数调优深入讲解视频.4 JAVA应用JVM原理及参数调优深入讲解视频.5 ...
Eclipse中的JVM内存设置涉及到多个参数,这些参数用于控制JVM如何分配和管理内存资源。以下是关于JVM内存设置的一些详细知识: 1. **JVM内存结构**: - **堆内存(Heap)**:这是Java应用程序的主要内存区域,用来...
### Tomcat 6.0 修改启动内存设置及 Java JVM 参数配置详解 #### 一、背景与目的 在部署和运行 Java Web 应用时,合理地配置应用服务器(如 Apache Tomcat)的内存是非常重要的。这不仅可以提升应用程序的性能,还...
本文档涉及Java虚拟机(JVM)的堆内存分配和管理,以及相关的JVM内存设置参数。堆内存是Java中用于存储对象实例的区域,它在JVM内存模型中占据核心位置。在深入理解堆内存结构及其设置参数之前,我们需要明确几个...
本文将深入探讨JVM的常用参数设置,以及它们如何影响Java应用程序的运行。 一、JVM内存设置 1. **堆内存**: - `-Xms`:初始堆大小,例如`-Xms256m`表示初始分配256MB内存。 - `-Xmx`:最大堆大小,例如`-Xmx...
### 设置Eclipse的JVM参数 #### 一、引言 在进行Java开发时,Eclipse作为一款广泛使用的集成开发环境(IDE),其性能优化对于提高开发效率和应用稳定性至关重要。其中,设置合适的JVM(Java虚拟机)参数是优化...
Tomcat7 安装使用及 JVM 连接数参数调优 Tomcat7 是一个流行的 Java Web 服务器,主要用于部署和管理基于 Java 的 Web 应用程序。为了确保 Tomcat7 的稳定运行和高效性能,需要对其进行合理的安装、配置和优化。...
### JVM参数配置详解 #### 一、理解JVM参数配置的重要性 Java Virtual Machine (JVM) 是运行Java程序的核心环境,其性能优化很大程度上依赖于正确的JVM参数配置。合理配置JVM参数不仅可以显著提升应用程序的运行...
JVM参数调优是优化Java应用程序性能的关键环节,尤其是在服务器端的应用中,如Web服务器Resin。本实践案例中,作者分别尝试了三种不同的垃圾回收(GC)策略:串行回收、并行回收和并发回收,并针对每种策略提供了...
JVM 主要管理两种类型的内存:堆和非堆。堆是 Java 代码可及的内存,是留给开发人员使用的;非堆就是 JVM 留给自己的内存,包括方法区、JVM 内部处理或优化所需的内存、每个类结构和方法和构造方法的代码。 堆内存...
### 常用JVM配置参数详解 #### 一、概述 Java虚拟机(JVM)是运行Java程序的核心环境,其性能的优劣直接影响到Java应用程序的执行效率。为了更好地控制JVM的行为并进行调优,熟悉JVM的配置参数至关重要。本文将深入...
### JVM内存参数调优详解 #### 一、概述 Java虚拟机(JVM)是执行Java字节码的软件环境,为了提高Java程序的性能和稳定性,合理调整JVM的内存参数至关重要。根据Java启动参数的不同分类,我们可以将其分为标准参数...
一、 JVM 内存设置参数 JVM 内存设置参数有四个: * -Xss:每个线程的 Stack 大小 * -Xmx:Java Heap 最大值 * -Xms:Java Heap 初始值 * -Xmn:Java Heap Young 区大小 这些参数的默认值可以根据物理内存大小及...
was使用及参数设置 was使用及参数设置 was使用及参数设置
《JVM工具、参数调优及调试技巧》 在Java开发中,理解并掌握JVM(Java虚拟机)的工作原理,以及如何进行工具使用、参数调优和问题调试,是提升程序性能的关键步骤。本文将深入探讨这些核心知识点,帮助开发者优化...
常用jvm参数都在这张图中,参考起来方便,是国外大神整理的
这些参数可以调整JVM的行为,优化内存分配、垃圾收集、线程设置等。以下是一些常见的JVM启动参数及其详细解释: 1. **-Xms和-Xmx**: 这两个参数用于设置Java堆内存的最小和最大值。例如,`-Xms256m -Xmx1024m`表示...