`
cvics_ailk
  • 浏览: 10862 次
社区版块
存档分类
最新评论

JVM内存限制和调整

    博客分类:
  • Java
 
阅读更多

堆(Heap)和非堆(Non-heap)内存
  按照官方的说法:“Java 虚拟机具有一个堆,堆是运行时数据区域,所有类实例和数组的内存均从此处分配。堆是在 Java 虚拟机启动时创建的。”“在JVM中堆之外的内存称为非堆内存(Non-heap memory)”。可以看出JVM主要管理两种类型的内存:堆和非堆。简单来说堆就是Java代码可及的内存,是留给开发人员使用的;非堆就是JVM留给 自己用的,所以方法区、JVM内部处理或优化所需的内存(如JIT编译后的代码缓存)、每个类结构(如运行时常数池、字段和方法数据)以及方法和构造方法 的代码都在非堆内存中。

堆内存分配
  JVM初始分配的内存由-Xms指定,默认是物理内存的1/64;JVM最大分配的内存由-Xmx 指定,默认是物理内存的1/4。默认空余堆内存小于40%时,JVM就会增大堆直到-Xmx的最大限制;空余堆内存大于70%时,JVM会减少堆直到- Xms的最小限制。因此服务器一般设置-Xms、-Xmx相等以避免在每次GC 后调整堆的大小。
非堆内存分配
  JVM使用-XX:PermSize设置非堆内存初始值,默认是物理内存的1/64;由XX:MaxPermSize设置最大非堆内存的大小,默认是物理内存的1/4。
JVM内存限制(最大值)
  首 先JVM内存限制于实际的最大物理内存(废话!呵呵),假设物理内存无限大的话,JVM内存的最大值跟操作系统有很大的关系。简单的说就32位处理器虽然 可控内存空间有4GB,但是具体的操作系统会给一个限制,这个限制一般是2GB-3GB(一般来说Windows系统下为1.5G-2G,Linux系统 下为2G-3G),而64bit以上的处理器就不会有限制了。

  通常,我们为了避免内存溢出等问题,需要设置环境变量
  JAVA_OPTS -Xms256M -Xmx512M 等,【对于服务器,一般都设置成一样的】
  但是有的时候可能这样的设置还会不行(比如,当Server应用程序加载较多类时,即jvm加载类时,永久域中的对象急剧增加,从而使jvm不断调整永久域大小,为了避免调整),你可以使用更多的参数配置,
  如: java -Xms512m -Xmx512m -XX:PermSize=64m -XX:MaxPermSize=128m
  其中,使用 -XX:MaxPerSize标志来增加永久域的大小,-XX:PerSize标志设置初始值

分享到:
评论

相关推荐

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

    JVM 内存限制是指 JVM 对于内存的最大限制。服务器一般设置-Xms、-Xmx 相等以避免在每次 GC 后调整堆的大小。同时,需要根据实际情况调整 JVM 的内存参数,以确保应用程序的性能和稳定性。 本资源详细讨论了 JVM ...

    JVM 内存结构及配置总结

    理解JVM内存结构和配置对于优化Java应用程序性能至关重要。正确的参数配置能够避免内存溢出、提高垃圾收集效率,从而提升整体系统性能。在实际应用中,开发者需要根据应用程序的特性和需求,灵活调整这些参数。同时...

    java虚拟机jvm及Tomcat中的jvm有关内存的设置与调优

    此外,还可以使用JConsole、VisualVM等工具,更直观地监控和分析JVM内存使用情况,这对于性能调优和问题排查极为有益。 #### 结语 合理设置和调优JVM内存参数,是提高Java应用性能的关键所在。通过对JVM内存管理...

    jvm内存溢出

    ### JVM内存溢出详解 #### 一、基本概念与理解 **JVM内存溢出**是一种常见的运行时错误,指的是程序在执行过程中因为...通过以上详细的分析和策略,可以有效地预防和解决JVM内存溢出问题,提高程序的稳定性和性能。

    JVM内存模型和性能优化.docx

    JVM性能优化主要涉及内存微调、锁竞争优化、CPU使用率调整和I/O优化。内存微调包括新生代和老生代的内存分配比例,以及选择合适的垃圾回收策略。理想的优化目标是在延迟性和吞吐量之间取得平衡。例如,增加内存可以...

    vmmap 观察jvm内存 监控jvm jvm线程

    `vmmap`工具是Mac OS X系统中一个强大的内存分析工具,它可以用来深入观察JVM内存的分配和使用情况。本文将详细讲解如何利用`vmmap`监控JVM,理解其核心概念,以及分析JVM线程。 首先,`vmmap`是Apple提供的命令行...

    Sun JVM原理与内存管理

    ### Sun JVM原理与内存管理 #### 一、Sun JDK 1.6 GC (Garbage Collector) Sun JDK 1.6 的垃圾收集器(GC)是其内存管理的关键组成...通过合理的内存分配策略和恰当的 GC 调整,可以显著提高应用程序的性能和稳定性。

    JVM 内存管理及调优.zip_JVM内存_java_memory

    在Java 8之前,方法区的一部分被称为永久代,由于内存限制和垃圾回收问题,Java 8将其替换为Metaspace,以减少OutofMemoryError的发生。 3. **虚拟机栈**:每个线程都有一个独立的虚拟机栈,用于存储局部变量表、...

    JVM内存管理学习笔记

    理解JVM内存管理的同时,还需要掌握一些工具来监控和调整JVM参数。常用的工具有: 1. jconsole:Java可视化监控工具,可以查看JVM内存、线程、类加载等信息。 2. jvisualvm:集成于JDK,提供更丰富的监控功能,...

    JVM内存管理和垃圾回收

    **JVM内存管理和垃圾回收** Java虚拟机(JVM)是Java程序运行的基石,它为Java应用程序提供了运行环境。JVM的内存管理是其核心功能之一,它涉及到对象的创建、分配、以及释放,而垃圾回收(Garbage Collection, GC...

    Eclipse中JVM内存设置.doc

    这是因为JVM内存分配受限于物理内存和操作系统的内存限制。 - 如果`-Xms`设置大于`-Xmx`,或者`-XX:PermSize`大于`-XX:MaxPermSize`,也会导致错误,因为初始内存大小不能大于最大内存。 - 还需考虑系统其他进程...

    JVM内存模型和垃圾收集.pdf

    本文将基于“JVM内存模型和垃圾收集”的主题,深入探讨JVM中的内存管理机制以及垃圾收集的相关技术细节。 #### 二、JVM内存模型概述 JVM内存模型主要涉及以下几个关键概念: 1. **堆(Heap)** - **定义**:堆是...

    JVM内存设置管理大全

    堆内存限制 JVM的最大堆内存大小受到三个方面的限制: - **操作系统的数据模型**:32位操作系统通常限制JVM最大堆内存为1.5GB至2GB之间,而64位操作系统理论上没有这样的限制。 - **可用虚拟内存**:这取决于操作...

    JVM内存模型及分区 JVM内存模型及分区

    理解JVM内存模型对于优化Java程序性能至关重要,合理分配和管理内存能有效避免内存泄漏和性能瓶颈。例如,通过调整堆大小、设置合理的垃圾回收策略,可以优化应用的运行效率。此外,了解这些内存区域的工作原理也能...

    jvm内存详解

    在Java程序中,JVM内存是一个重要组成部分,它管理着对象的创建、存储和回收等过程。理解JVM内存分配对于编写高效的Java应用程序至关重要。 描述部分指出,本文将探讨JVM如何使用Windows和Linux平台上的本机内存。...

    关于tomcat乱码以及tomcat jvm 内存溢出问题的解决方案和理论

    标题中的“关于tomcat乱码以及...综上所述,解决Tomcat的乱码问题需要正确配置字符编码,而处理JVM内存溢出则需优化内存分配和垃圾收集策略。对于MySQL的配置,理解`my.cnf`文件的内容对于数据库的高效运行也至关重要。

    JVM内存结构.zip

    Java虚拟机(JVM)是Java程序运行的基础,它为Java应用程序提供了运行环境。JVM内存结构的理解对于优化Java程序性能、避免内存溢出等问题至关重要。...通过监控和调优JVM内存参数,可以有效地提升应用的性能。

    JVM内存溢出

    【JVM内存溢出】指的是Java...总的来说,解决JVM内存溢出问题需要深入了解Java内存模型,合理配置JVM参数,并结合性能监控工具进行诊断和优化。这不仅可以避免服务器因内存问题崩溃,还能提升整体系统的稳定性和性能。

Global site tag (gtag.js) - Google Analytics