`

JVM性能参数调整介绍

 
阅读更多

JVM内部体系结构


Sun JDK在实现时遵照JVM规范,将内存空间划分为方法区、堆、本地方法栈、PC寄存器、jvm方法栈。
方法区
    方法区主要存放要加载的类的信息,比如类的名称、类的修饰符、类中的静态变量、final类型的常量、field、method等信息。方法区是线程共享的,在一定条件下也会被GC,当方法区要使用的内存超过其允许的大小时,会抛出OutOfMemory的错误信息。
    方法区的存储区域对应Permanet Generation(又称,持久代),其默认值为{16MB-64MB},它的大小可以通过如下选项进行调整:
                                            最小值:-XX:PermSize
                                            最大值:-XX:MaxPermSize

    堆用于存储新创建的对象和数组。其大小可以通过如下选项进行调整:
                                            最小值:-Xms
                                            最大值:-Xmx
    为了让内存回收更有效率,Sun JDK从1.2开始对堆采用分代管理的方式。
                        heap = New Generation (新生代)+ Old Generation(旧生代)
    其中,New Generation又可以分为Eden SpaceSurvivor Space,而Survivor Space由两块大小相同的区域组成(通常称为S0、S1)。那么,Eden Space、S0、S1用途上有什么区别吗?先来说说Eden Space,由于堆是线程共享的,因此在堆上分配内存是需要加锁的,这就导致创建对象开销增大,Sun JDK为了提升内存分配的效率,会为每个线程在新生代的Eden Space上分配一块独立的空间,这块空间叫做TLAB(Thread Local Allocation Buffer),因此Eden Space是多个线程独享的连续的内存区域,在一个线程内创建对象,JVM首先考虑在Eden Space的TLAB上分配,如果对象过大或者TLAB空间已用完,那么将在堆上分配。S0、S1也用于新创建对象的存储,他们的另外一个用途是在GC时的临时复制空间。
                                           新生代大小值:-Xmn
                                           Survivor Space大小:-XX:SurvivorRatio
    旧生代主要存放多次GC后仍然存活的对象,不过,新建的对象也有可能在旧生代上分配。一种是大对象(-XX:PretenureSizeThreshold来确定),另一种是大数组,且数组未引用外部对象。旧生代大小:
                                            旧生代大小值=-Xmx 减去 -Xmn
JVM方法栈
    JVM方法栈是线程私有的,其在内存分配上非常高效。当JVM方法栈空间不足时,会抛出StackOverflowError的错误。JVM方法栈可通过如下选项进行调整:
                                            JVM方法栈大小:-Xss

  • 大小: 30.8 KB
分享到:
评论

相关推荐

    jvm 配置jvm参数

    ### JVM参数配置详解 #### 一、理解JVM参数配置的重要性 Java Virtual Machine (JVM) 是运行Java程序的核心环境,其性能...希望本文能为读者提供一个深入理解JVM参数配置的起点,引导大家探索更高级的性能优化技术。

    jvm优化参数配置

    - `jconsole`和`jvisualvm`是常用的JVM性能监控工具,可以帮助分析内存、CPU使用情况,以及GC日志。 6. **类加载机制**: - 理解双亲委派模型有助于优化类加载过程,避免类冲突等问题。 7. **编译优化**: - `-...

    jvm参数设置_JVM参数设置_

    以上只是一部分常见的JVM参数,实际使用中还需要根据应用特性、硬件配置及性能需求进行调整。在进行JVM调优时,通常需要结合监控工具(如VisualVM或JProfiler)观察应用运行状态,以找出性能瓶颈并进行针对性优化。...

    jvm启动参数大全

    这些参数可以调整JVM的行为,优化内存分配、垃圾收集、线程设置等。以下是一些常见的JVM启动参数及其详细解释: 1. **-Xms和-Xmx**: 这两个参数用于设置Java堆内存的最小和最大值。例如,`-Xms256m -Xmx1024m`表示...

    jvm内存参数调优

    Java虚拟机(JVM)是执行Java字节码的软件环境,为了提高Java程序的性能和稳定性,合理调整JVM的内存参数至关重要。根据Java启动参数的不同分类,我们可以将其分为标准参数(-)、非标准参数(-X)以及非稳定参数(-XX...

    jvm参数与系统性能的优化

    JVM 参数与系统性能的优化 在 Java 虚拟机(JVM)中,参数设置对系统性能的影响是至关重要的。通过设置合适的 JVM 参数,可以提高系统性能,减少垃圾回收的频率和时间,提高应用程序的执行效率。 第一点:设置堆栈...

    JVM优化3(Tomcat参数调优,JVM参数调优,jvm字节码,代码优化).pdf

    总结而言,该文档覆盖了Tomcat服务器优化、JVM参数调整、字节码级别的优化以及代码层面的优化等多个方面,旨在通过一系列配置和操作,提升Java应用以及Web服务器的性能和效率。同时,也提到了性能测试的重要性和在...

    JVM内存参数详解以及配置调优

    同时,需要根据实际情况调整 JVM 的内存参数,以确保应用程序的性能和稳定性。 本资源详细讨论了 JVM 内存参数的配置和调优,包括 JVM 的结构、内存管理、垃圾回收、堆和非堆内存、内存分配和限制等方面,为开发...

    常用JVM配置参数.ppt

    ### 常用JVM配置参数详解 #### 一、概述 Java虚拟机(JVM)是运行Java程序的核心环境,其性能的优劣直接影响到Java应用程序的执行效率...在实际应用中,建议根据具体的应用场景灵活调整JVM参数,以达到最佳的运行效果。

    tomcat6.0 修改启动内存设置 java jvm参数配置

    本文将详细介绍如何在 Tomcat 6.0 中修改启动内存设置以及配置 Java 虚拟机 (JVM) 的相关参数。 #### 二、JVM 内存参数详解 在调整 Tomcat 的内存设置之前,我们需要了解一些基本的 JVM 内存参数: 1. **`-Xms`**...

    简单实用JVM参数配置

    在面临`OutOfMemoryError`时,通常需要关注以下几个方面进行JVM参数调整: 1. **新生代**:新生代的Eden和Survivor区一般不会引发`OutOfMemoryError`,因为垃圾收集频繁进行。但是,如果对象频繁晋升至老生代,可能...

    深入JVM内核—原理、诊断与优化视频教程-3.常用JVM配置参数

    总结起来,深入理解JVM内核,熟练掌握诊断技巧,并合理调整JVM配置参数,是每一个Java开发者必备的技能。通过本教程的学习,你将能够运用这些知识有效地提升应用性能,解决实际工作中的各种挑战。

    jvm 参数及gc详解

    Java虚拟机(JVM)是Java程序运行的基础,它的配置参数和垃圾收集(GC)机制对于优化应用程序性能至关重要。本文将深入探讨JVM参数及其与Java垃圾收集相关的知识。 一、JVM参数详解 JVM参数可以分为三类:启动参数...

    jvm参数设置

    ### JVM参数设置详解 在Java应用开发与维护过程中,JVM(Java虚拟机)的配置至关重要,它直接影响到应用程序的性能表现与稳定性。本文将基于提供的文件内容,深入解析Linux环境下JVM的基本参数设置方法及原理。 ##...

    Tomcat JVM的参数调优

    【标题】"Tomcat JVM参数调优"涉及的是在运行Apache Tomcat服务器时优化Java虚拟机(JVM)性能的过程。Tomcat是一个流行的开源Java应用服务器,它用于部署和运行Java Servlets和JavaServer Pages(JSP)。由于JVM是...

    JVM常用参数设置

    理解并正确配置JVM参数对于优化应用程序性能、内存管理和故障排查至关重要。本文将深入探讨JVM的常用参数设置,以及它们如何影响Java应用程序的运行。 一、JVM内存设置 1. **堆内存**: - `-Xms`:初始堆大小,...

    jvm 参数调优实践

    JVM参数调优是优化Java应用程序性能的关键环节,尤其是在服务器端的应用中,如Web服务器Resin。本实践案例中,作者分别尝试了三种不同的垃圾回收(GC)策略:串行回收、并行回收和并发回收,并针对每种策略提供了...

    Java6 JVM命令行参数

    Java虚拟机(JVM)提供了丰富的命令行参数选项,用于调整和优化Java应用程序的运行环境。这些参数对于开发人员来说至关重要,尤其是在资源管理和性能优化方面。本篇文章将深入探讨部分重要的JVM命令行参数,并给出具体...

Global site tag (gtag.js) - Google Analytics