`
tmj_159
  • 浏览: 707124 次
  • 性别: Icon_minigender_1
  • 来自: 永州
社区版块
存档分类
最新评论

JAVA 进程最大内存

阅读更多

    总听说32bit 系统中进程最大内存2G 类似的话,今天花了点时间来求证下,目前还有不完整的情况,后续补充。

 

    首先说32位,这个概念最早应该是从CPU来的。通常32位CPU最大支持2^32Bytes内存也就是4GB,不过较新的CPU一般支持PAE模式,启用PAE模式理论上可以支持64GB的内存。

    不过仅仅CPU支持是不行的,还需要操作系统支持。操作系统也有32位,64位之分。而且一般情况下32位操作系统最大内存是4G,比如我们的通常使用的XP,vista,win7,有些企业版本,比如带Server ,Enterprice ,Datacenter字样的特殊版本内存通常会大很多。

 

    linux2.3.23之前也是4G,之后的版本支持PAE了,所以理论上都是64GB。如果想你的系统支持内存大于4G需要自己开启PAE。

 

    既然32位系统最大支持内存是4G,为什么我们编程的时候是2G呢,这个跟操作系统有关系了。

    对微软的系统来说,操作系统将内存分为两部分,一部分给操作系统使用的,一部分给除操作系统之外的应用程序使用的。

默认情况下两部分都是2GB,(2000-2003,都会有个boot.ini)文件可以设置这个值。win7里没有这个文件了,但是可以通过bcdedit命令来设置。

    对于linux系统来说,这个比例是1:3,3GB是给用户进程使用的,因此在linux下应用程序的最大内存是3GB,当然也是可以设置的,好像需要从新编译内核。

 

   接下来我用32位的window7系统来测试JAVA最大内存的情况。

 

   首先了解系统默认的虚拟机参数

   -Xms 初始堆大小 物理内存的1/64

   -Xmx 最大堆大小 物理内存的1/4

   -XX:MaxPermSize 设置持久代最大值 物理内存的1/4

   -Xss 每个线程的堆栈大小   JDK5.0后每个大小为1M,之前为256K,减少这个值能够创建更多的线程。

 

   1,修改-Xmx1600m 其它默认可以运行

   2,修改-Xmx1650m 其它默认不可以运行   (失败)

   3,修改-Xmx1600m -XX:MaxPermSize=80m 可以运行

   4,修改-Xmx1600m -XX:MaxPermSize=90m 不可以运行   (失败)

   5,修改-Xmx680m -XX:MaxPermSize=1000m 可以运行

   6,修改-Xmx690m -XX:MaxPermSize=1000m 不可以运行   (失败)

 

所以为了安全,通常两个Xmx 和MaxPermSize 之和<1500m

分享到:
评论

相关推荐

    JAVA进程占用高内存缘由分析与优化方法_.docx

    JAVA进程占用高内存缘由分析与优化方法 在 Java 进程中,高内存占用是一个常见的问题,本文将通过 jmap 和 ps 命令来分析 Java 进程的内存占用情况,并讨论可能的优化方法。 1. Java 进程的内存占用分析 使用 ...

    Java共享内存并行编程

    ### Java共享内存并行编程 #### 1. 引言 随着计算机技术的发展,特别是多核处理器的普及,高效利用多核架构成为提高程序性能的关键因素之一。Java作为一种跨平台的语言,不仅在Web开发、企业级应用等领域有着广泛...

    java内存泄露、溢出检查方法和工具

    例如,如果Java进程的PID为12345,可以执行`jmap -dump:format=b,file=heapdump.hprof 12345`,这会在当前目录下创建一个名为`heapdump.hprof`的堆转储文件。 2. **使用Memory Analyzer(MAT)分析**:MAT是一款由...

    银行家算法--进程调度算法--内存分配算法java实现

    《银行家算法在进程调度与内存分配中的Java实现详解》 银行家算法是解决系统安全性问题的一种经典策略,尤其在多道程序设计环境下,对于内存分配和进程调度具有重要意义。本文将深入探讨银行家算法的基本原理,并...

    Java内存机制学习和使用

    - **调优策略**:为了提高程序的性能和响应速度,开发人员可以通过调整JVM参数来优化Java堆内存的大小,如`-Xmx`(最大堆内存大小)和`-Xms`(初始堆内存大小)等。 #### 三、本机内存及其作用 除了Java堆内存之外...

    java jstat 查看哪个进程频繁GC垃圾回收

    总的来说,通过`jstat`和GC日志,我们可以深入理解Java进程的内存行为,定位并解决频繁GC的问题,从而提高应用性能。记住,优化JVM配置是一项细致的工作,需要根据具体应用的特性进行调整,不能一概而论。

    java使用JMAP定位代码内存泄漏在哪

    1. **生成堆转储文件**:通过`jmap -dump:format=b,file=&lt;filename&gt; &lt;pid&gt;`命令,我们可以从运行中的Java进程生成一个heap dump文件,这个文件包含了Java堆内存的所有信息。 2. **查看堆概要**:`jmap -histo:live ...

    操作系统实验和课设,java实现动态内存分配和回收,FF,NF,WF,BF

    在这个实验和课程设计中,我们将深入探讨动态内存分配与回收的机制,通过Java编程语言来实现四种不同的内存分配策略:First Fit(FF)、Next Fit(NF)、Best Fit(BF)以及Worst Fit(WF)。 首先,让我们详细了解...

    用java编的适用于操作系统课程设计的线程-进程管理

    Java作为一种跨平台的编程语言,提供了丰富的API来支持线程和进程的管理。本项目利用Java实现了线程和进程的模拟及管理,旨在帮助学生深入理解操作系统的工作原理。 线程是程序执行的最小单元,它共享同一进程中的...

    Java堆外内存的使用Java开发Java经验技巧共5页

    - OpenJDK的JVM参数配置:如`-XX:MaxDirectMemorySize`设置最大直接内存大小。 4. **注意事项**: - 直接内存虽快,但也有局限,比如容量有限,过度使用可能导致内存溢出。 - 直接内存不受JVM的垃圾收集器管理,...

    Java 8 内存模型.pdf

    在详细介绍Java 8内存模型之前,需要了解的是,JVM(Java虚拟机)在启动时,操作系统会为JVM进程分配一系列内存区域,这些内存区域包括堆(Heap)、元空间(MetaSpace)、线程堆栈(Thread Stack)、共享库(Shared ...

    Android获取当前应用分配的最大内存和目前使用内存的方法

    在Android里,程序内存被分为2部分:native和dalvik,dalvik就是我们普通的Java使用内存,分析堆栈的时候使用的内存。我们创建的对象是在这里面分配的,对于内存的限制是 native+dalvik 不能超过最大限制. Android ...

    java读取CPU内存信息

    例如,通过`Runtime.getRuntime().freeMemory()`可以获得当前JVM的空闲内存,`totalMemory()`返回总内存,而`maxMemory()`则返回JVM的最大可用内存。要获取物理内存信息,通常需要借助于操作系统的API,这在Java中...

    操作系统实验进程调度和内存管理java语言版本.pdf

    - `limit`: 内存限制,表示进程可使用的最大内存范围。 - `pcbFlag`: 一个标志字段,可能用于表示进程的特定属性或状态。 类中的`getProcessState()`方法将进程状态转换为友好的字符串形式,便于理解和显示。 3...

    java 内存分配 适应法

    它选择最大的空闲块来满足进程需求,这样可以尽量保持较小的空闲块,避免小块内存过于分散。然而,这种策略可能会导致大的内存块被频繁分割,长期来看可能增加内存碎片。 在Java中,内存分配主要涉及堆内存和栈内存...

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

    - **prstat**:监控Java进程的CPU和内存使用,用于Java应用程序的性能分析。 - **jconsole**和**jvisualvm**:Java自带的性能监视工具,提供详细的JVM内存和线程信息。 通过理解这些概念和准则,并熟练运用AIX的...

    操作系统 内存管理 java编写

    最优分配力求最大化剩余空间的利用率,最坏分配则是为了避免因连续分配大块内存导致大量小碎片,而最先分配则是按请求顺序分配内存,相对简单但可能导致碎片问题。 实验内容主要包括以下几个方面: 1. 在进程管理...

    进程调度算法、内存管理算法、银行家算法(Java实现),可用于课设.zip

    在这个“进程调度算法、内存管理算法、银行家算法(Java实现),可用于课设.zip”压缩包中,我们可以找到三个核心主题的详细实现:进程调度、内存管理和银行家算法,这些都是操作系统中的核心组件。 首先,**进程...

    优化Java堆内存大小的五个技巧

    同时,操作系统需要预留足够的物理内存给其他进程。 - **平衡新生代和老年代**:新生代用于存放新创建的对象,老年代则存放长期存在的对象。合理设置新生代和老年代的比例(如 `-XX:NewRatio` 和 `-XX:SurvivorRatio...

Global site tag (gtag.js) - Google Analytics