`
tmj_159
  • 浏览: 700420 次
  • 性别: 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 堆栈内存分析

    -Xmx3550m :设置JVM 最大堆内存为3550M 。 -Xms3550m :设置JVM 初始堆内存为3550M。此值可以设置与-Xmx 相同,以避免每次垃 圾回收完成后JVM 重新分配内存。 -Xss128k :设置每个线程的栈大小。JDK5.0 以后每个...

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

    本文介绍了什么是Java,AIX下的Java版本,Java的性能准则,AIX提供的监视Java的工具,以及如何在AIX用户环境下进行Java应用程序性能调优。

    Java问题定位技术.pdf

    E AIX操作系统下,32位进程的最大内存占有情况 F 关于TCP/IP G windows 2003/XP下,一个端口可以多个监听 H Suse9.0下,线程创建的数量和堆内存/永久内存的关系 I JConsole J gcviewer K IBM JDK下定位引起CoreDump...

    基于Java模拟操作系统段页式虚拟内存管理【100012423】

    内存大小64K,页框大小为1K,一个进程最多有4个段,且每个段最大为16K。一个进程驻留集最多为8页。 驻留集置换策略:局部策略(仅在进程的驻留集中选择一页) 页面淘汰策略:FIFO、LRU 要实现的功能 创建进程:输入...

    Java开发技术大全(500个源代码).

    GcdAndGcm.java 求最大公约数和最小公倍数 errorInit.java 演示变量初始化错误的程序 integerExample.java 演示各种整型变量的使用 isPrime.java 判断素数 leapYearByIf.java 用if语句判断闰年 ...

    JAVA上百实例源码以及开源项目

     Java局域网通信——飞鸽传书源代码,大家都知道VB版、VC版还有Delphi版的飞鸽传书软件,但是Java版的确实不多,因此这个Java文件传输实例不可错过,Java网络编程技能的提升很有帮助。 Java聊天程序,包括服务端和...

    JAVA上百实例源码以及开源项目源代码

    Java 源码包 Applet钢琴模拟程序java源码 2个目标文件,提供基本的音乐编辑功能。编辑音乐软件的朋友,这款实例会对你有所帮助。 Calendar万年历 1个目标文件 EJB 模拟银行ATM流程及操作源代码 6个目标文件,EJB来...

    java开源包11

    最大限度地减少时间和费用开发自定义的DSL(领域特定语言在Java)要求。 日志服务器 Apache Flume.tar Flume 是一个分布式、可靠和高可用的服务,用于收集、聚合以及移动大量日志数据,使用一个简单灵活的架构,就...

    java开源包6

    最大限度地减少时间和费用开发自定义的DSL(领域特定语言在Java)要求。 日志服务器 Apache Flume.tar Flume 是一个分布式、可靠和高可用的服务,用于收集、聚合以及移动大量日志数据,使用一个简单灵活的架构,就...

    java开源包9

    最大限度地减少时间和费用开发自定义的DSL(领域特定语言在Java)要求。 日志服务器 Apache Flume.tar Flume 是一个分布式、可靠和高可用的服务,用于收集、聚合以及移动大量日志数据,使用一个简单灵活的架构,就...

    java开源包101

    最大限度地减少时间和费用开发自定义的DSL(领域特定语言在Java)要求。 日志服务器 Apache Flume.tar Flume 是一个分布式、可靠和高可用的服务,用于收集、聚合以及移动大量日志数据,使用一个简单灵活的架构,就...

    java开源包4

    最大限度地减少时间和费用开发自定义的DSL(领域特定语言在Java)要求。 日志服务器 Apache Flume.tar Flume 是一个分布式、可靠和高可用的服务,用于收集、聚合以及移动大量日志数据,使用一个简单灵活的架构,就...

    java开源包5

    最大限度地减少时间和费用开发自定义的DSL(领域特定语言在Java)要求。 日志服务器 Apache Flume.tar Flume 是一个分布式、可靠和高可用的服务,用于收集、聚合以及移动大量日志数据,使用一个简单灵活的架构,就...

    java开源包8

    最大限度地减少时间和费用开发自定义的DSL(领域特定语言在Java)要求。 日志服务器 Apache Flume.tar Flume 是一个分布式、可靠和高可用的服务,用于收集、聚合以及移动大量日志数据,使用一个简单灵活的架构,就...

    java开源包10

    最大限度地减少时间和费用开发自定义的DSL(领域特定语言在Java)要求。 日志服务器 Apache Flume.tar Flume 是一个分布式、可靠和高可用的服务,用于收集、聚合以及移动大量日志数据,使用一个简单灵活的架构,就...

    java开源包3

    最大限度地减少时间和费用开发自定义的DSL(领域特定语言在Java)要求。 日志服务器 Apache Flume.tar Flume 是一个分布式、可靠和高可用的服务,用于收集、聚合以及移动大量日志数据,使用一个简单灵活的架构,就...

    java开源包1

    最大限度地减少时间和费用开发自定义的DSL(领域特定语言在Java)要求。 日志服务器 Apache Flume.tar Flume 是一个分布式、可靠和高可用的服务,用于收集、聚合以及移动大量日志数据,使用一个简单灵活的架构,就...

    java在cpu的占有率

    /** 最大可使用内存. */ private long maxMemory; /** 操作系统. */ private String osName; /** 总的物理内存. */ private long totalMemorySize; /** 剩余的物理内存. */ private long ...

    Java性能优化

    尽量避免在经常调用的方法,循环中new对象,由于系统不仅要花费时间来创建对象,而且还要花时间对这些对象进行垃圾回收和处理,在我们可以控制的范围内,最大限度的重用对象,最好能用基本的数据类型或数组来替代...

    JAVA面试题最全集

    方法在垃圾收集器将对象从内存中清除出去之前做必要的清理工作。这个方法是由垃圾收集器在确定这个对象没有被引用时对这个对象调用的。它是在 Object 类中定义的,因此所有的类都继承了它。子类覆盖 finalize() ...

Global site tag (gtag.js) - Google Analytics