`
daniel_tu
  • 浏览: 184232 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

JVM内存最大能调多大

阅读更多

[转载] http://www.blogjava.net/leeya/articles/190459.html


今天分析了当前比较流行的几个不同公司不同版本JVM 的最大内存 ,得出来的结果如下:

公司 JVM 版本 最大内存 (兆)client 最大内存 (兆)server
SUN 1.5.x 1492 1520
SUN 1.5.5(Linux) 2634 2660
SUN 1.4.2 1564 1564
SUN 1.4.2(Linux) 1900 1260
IBM 1.4.2(Linux) 2047 N/A
BEA JRockit 1.5 (U3) 1909 1902


除非特别说明,否则JVM 版本都运行在Windows操作系统下

附:如何获得JVM 的最大可用内存

在命令行下用 java -XmxXXXXM -version 命令来进行测试,然后逐渐的增大XXXX的值,如果执行正常就表示指定的内存 大小可用,否则会打印错误信息。

实际发现版本上有细微差别的JDK最大容许内存 值都不尽相同,因此在实际的应用中还是要自己试验一下看到底内存 能达到什么样的值。

通过这个表想说明的是,如果你的机器的内存 太多的话,只能通过多运行几个实例来提供机器的利用率了,例如跑Tomcat,你可以多装几个Tomcat并做集群,依此类推。

  • 堆(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以上的处理器就不会有限制了。

     

    所以说设置VM参数导致程序无法启动主要有以下几种原因:

    1) 参数中-Xms的值大于-Xmx,或者-XX:PermSize的值大于-XX:MaxPermSize;

    2) -Xmx的值和-XX:MaxPermSize的总和超过了JVM内存的最大限制,比如当前操作系统最大内存限制,或者实际的物理内存等等。说到实际物理 内存这里需要说明一点的是,如果你的内存是1024MB,但实际系统中用到的并不可能是1024MB,因为有一部分被硬件占用了。


  • 分享到:
    评论

    相关推荐

      JVM内存设置方法.docx

      JVM内存设置方法 JVM(Java Virtual Machine)是 Java 程序的运行环境,为了提高 Java 程序的性能,需要合理地设置 JVM 的内存分配。下面将详细介绍 JVM 内存设置的方法。 一、 JVM 内存设置参数 JVM 内存设置...

      jdk 内存设置jdk内存设置

      其中,-Xmx3550m 设置 JVM 最大可用内存为 3550M,-Xms3550m 设置 JVM 初始内存为 3550m,-Xmn2g 设置年轻代大小为 2G,-Xss128k 设置每个线程的堆栈大小为 128k。 垃圾收集器的选择和配置也是 jdk 内存设置的重要...

      JVM实战参数调优

      1. **内存配置**:JVM内存分为堆内存(Heap)、栈内存(Stack)、方法区(Method Area)、本地方法栈(Native Method Stack)和程序计数器(PC Register)。通过-Xms和-Xmx设置初始和最大堆内存,-XX:NewRatio调整...

      Aqua Data Studio 17.0扩大JVM方法

      - **最大内存 (Max Memory)**:JVM 将从操作系统分配的最大内存量。这个值是可以通过 `-Xmx` 参数进行配置的。 图形化内存条分为两部分: - **深灰色部分**:表示已用内存占最大内存的比例。 - **浅灰色部分**:...

      浅谈IBM AIX环境下的Java性能调优

      - **jconsole**和**jvisualvm**:Java自带的性能监视工具,提供详细的JVM内存和线程信息。 通过理解这些概念和准则,并熟练运用AIX的监控工具,开发者可以有效地在AIX环境中优化Java应用程序的性能,确保系统稳定...

      jvm 调优的详细介绍

      合理的JVM调优不仅可以提升程序的运行效率,还能优化用户体验。本文将详细介绍几种常用的垃圾收集(GC)策略及其配置方法,并深入探讨如何针对不同的应用场景选择合适的策略。 #### 常见的GC策略 在Java虚拟机中,...

      resin-jvm 调优

      gc即垃圾收集机制是指jvm用于释放那些不再使用的对象所占用的内存。java语言并不要求jvm有gc,也没有规定gc如何工作。不过常用的jvm都有gc,而且大多数gc都使用类似的算法管理内存和执行收集操作。 在充分理解了...

      Inside the JVM

      - **主题**:JVM内存管理及故障排查 - **目标受众**:Java开发者与系统管理员 - **讨论重点**: - Java内存布局的理解 - 内存溢出错误的原因与解决方法 - 垃圾收集基础知识 - Java性能调优选项 - 问答环节 ###...

      java-JVM-面试题

      Java JVM(Java虚拟机)是Java程序运行...以上只是JVM面试中的一些基础知识点,实际面试可能涉及更多细节,如内存分配策略、垃圾收集算法、性能调优等。理解JVM的工作原理对于解决性能问题和优化Java应用程序至关重要。

      java内存讲解

      本文将详细探讨JVM的垃圾回收机制及其调优方法,深入分析Java内存分配原理,并讨论Java中的内存管理与内存泄露问题。 #### 二、JVM的垃圾回收机制概述 垃圾回收(Garbage Collection, GC)是JVM用于自动回收不再使用...

      JVM 50 道面试题及答案.docx

      * 堆是 JVM 的最大的一块内存空间,用于存储对象实例和数组。 * 方法区是用于存储类的元数据的,包括类的字段、方法、常量池等信息。 * 运行时常量池是方法区的一部分,用于存储类的常量池。 * 本地方法栈是用于存储...

      20道面试官常问的JVM面试题!.zip

      以下是一些常见的JVM面试题,涵盖了基础概念、内存管理、垃圾收集、类加载机制等多个方面,帮助你深入理解JVM的工作原理。 1. **JVM的结构是什么?** JVM由类装载器、运行时数据区、执行引擎、本地方法接口和本地...

      2_JVM_3章下~5.pdf

      G1收集器是一款全功能垃圾回收器,它将整个堆内存划分为多个大小相等的独立区域(Region),并根据需要将某些Region用作新生代Eden、Survivor或老年代空间。G1收集器支持面向局部回收的设计思路,能够根据停顿时间...

      jvm_session_demo:jvm 会话演示

      8. **性能优化**: 会话过多会占用大量内存,因此需要合理配置会话的最大数量、超时时间,以及考虑使用会话缓存和会话复制策略来提高系统性能。 9. **会话监听器**: Java Servlet API允许注册监听器,当会话创建、...

      jvm-juc:jvm学习笔记

      2. 运行时数据区:包括堆内存(Heap)、方法区(Method Area)、虚拟机栈(JVM Stack)、本地方法栈(Native Method Stack)和程序计数器(PC Register)。其中,堆是所有线程共享的内存区域,主要存储对象实例;...

      内存管理与垃圾回收1

      Java虚拟机(JVM)内存管理与垃圾回收是Java编程中的关键概念,它涉及到程序运行时数据区的划分、内存分配策略以及...根据应用的需求和资源情况,合理设置JVM内存参数和选择合适的垃圾收集器是提升Java应用性能的关键。

    Global site tag (gtag.js) - Google Analytics