电子文档交易市场
安卓APP | ios版本
电子文档交易市场
安卓APP | ios版本
换一换
首页 金锄头文库 > 资源分类 > DOCX文档下载
分享到微信 分享到微博 分享到QQ空间

JVM内存最大能调多大分析

  • 资源ID:470784729       资源大小:15.51KB        全文页数:4页
  • 资源格式: DOCX        下载积分:10金贝
快捷下载 游客一键下载
账号登录下载
微信登录下载
三方登录下载: 微信开放平台登录   支付宝登录   QQ登录  
二维码
微信扫一扫登录
下载资源需要10金贝
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
如填写123,账号就是123,密码也是123。
支付方式: 支付宝    微信支付   
验证码:   换一换

 
账号:
密码:
验证码:   换一换
  忘记密码?
    
1、金锄头文库是“C2C”交易模式,即卖家上传的文档直接由买家下载,本站只是中间服务平台,本站所有文档下载所得的收益全部归上传人(卖家)所有,作为网络服务商,若您的权利被侵害请及时联系右侧客服;
2、如你看到网页展示的文档有jinchutou.com水印,是因预览和防盗链等技术需要对部份页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有jinchutou.com水印标识,下载后原文更清晰;
3、所有的PPT和DOC文档都被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;下载前须认真查看,确认无误后再购买;
4、文档大部份都是可以预览的,金锄头文库作为内容存储提供商,无法对各卖家所售文档的真实性、完整性、准确性以及专业性等问题提供审核和保证,请慎重购买;
5、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据;
6、如果您还有什么不清楚的或需要我们协助,可以点击右侧栏的客服。
下载须知 | 常见问题汇总

JVM内存最大能调多大分析

JVM 内存最大能调多大分析【经典】2010-11-10 13:21转载自suofang 最终编辑suofang 上次用weblogic把-XmxXXXX设成2G,就启动不起来,设小点就起来了,当时 很气,怎么2G都起不了,今天在看到了一篇解释,转过来了 这 次一位老友提出了这个问题,记得当年一个java高手在blogjava提出后, 被骂得半死。大家使用java -XmxXXXX -version版本得出了不同的结论。后来 老友说大概是1800M左右,我当时反驳,“我设置过服务器8G内存,我使用两 个tomcat,每个2G”。为此,我翻开所有的JVM的内存管理的c代码,没有任 何结论。我不是linux内核程序员,但是我看过linux的源码,知道32位体系 结构的计算机寻址 空间是2"32=4G,intel Pentium Pro处理器寻址空间是36 位,CPU内部增加了 PAE寄存器。用于处理多出来的4根地址 线 的使用,所以PAE的技术实现最大2'36=64G寻址。通过linux的内核源码, 标准Linux内核对于物理内存的管理采用1:3的分配比例,即物理内存的1/4 为内核空间(kernel space),剩下的3/4为用户进程空间(user space),因 此,在一台4G内存的服务器上,用户进程可使用的内存最大也就是3G。当进程 被内核调入CPU运行时,不同的地址空间数据会被调入4G以内的用户进程空间, 其实就能用3G。IA32架构上,单一进程是不能使用超过4G的内存空间的。但 是我记得我给mysql server分配内存大约是1.7G左右,不是2的32次方-1,我 分配java 2G内存的计算机是IBM的RS6000.经过不同平台的测 试,我得出了大概的数值,win2k下1.6G左右,nt下1.2G,原 因是这样的Classic VM and Hot Spot VM存放用户区的连续地址中,NT把 kernel DLLs放在0x7c开头的地址空间,所以nt下只有2G的空间,所以JVM heap使用极限是2G.用户的dll开始于0x77000000,用户的应用程序开始于 0x00400000.我现在唯一确定的是sun可能为了防止和某些JVM插件的冲突,把 dll的地址给rebase一下,这样使用的空间就很少了一部分.为什末rebase,原因 是这样的,因为在windows下编译dll的默认地址都是10000000, 一般在 release之前的时候要rebase 一下,rebase的-b这个参数是指定一个起始地 址,MSDN 建议地址是 0x60000000,这个工具随 visual studio 和 platform SDK 发放。例如rebase.exe -b 0x6D000000 jdkjrebin*.dlljdkjrebinhotspotjvm.dll这样你的JVM用的内存多一些,目前关于这个我 只能得到BEA的JRockit最大也只能使用1.8G内存,看来各家编译JDK时都作 了些手脚 .目前只能得到bea的的-Xmx最小值是16 MB,sun的资料很不全,还好java开源 了,可以不依靠sun 了.sun 提供的资料Maximum Address Space Per ProcessOperating SystemMaximum Address Space Per ProcessRedhat Linux 32 bit2 GBRedhat Linux 64 bit3 GBWindows 98/2000/NT/Me/XP2 GBSolaris x86 (32 bit)4 GBSolaris 32 bit4 GBSolaris 64 bitTerabytes以 上文档有误 ,32 位的 redhat Server 利用 Highmem 技术可以使用 3G 内存 . solaris 不愧是 java 的诞生平台。问了一下bea的工程师,得出大致的结论,Windows 2003/XP using the /3GB switch (32-bit OS)1.85 GB - JRockit 5.0 R25.2 (SP2)2.85 GB - JRockit 5.0 R26 (SP3)Windows 2003/XP x64 Edition with a 32-bit JVM (64-bit OS)2.05 GB - JRockit 5.0 R25.2 (SP2)3.85 GB - JRockit 5.0 R26 (SP3)对于 windows 2000 打开 3G 模式, windows 核心编程说得很清楚, boot.ini 加入 /3G 参数。boot loader timeout=30 default=multi(0)disk(0)rdisk(0)partition(2)WINNT operating systemsmulti(0)disk(0)rdisk(0)partition(2)WINNT="?" /3GBNote: "?" in theprevious examplecanbe the programmaticname of any of the following operating system versions:Windows XP ProfessionalWindows Server 2003Windows Server 2003, Enterprise EditionWindows Server 2003, Datacenter EditionWindows 2000 Advanced ServerWindows 2000 Datacenter ServerWindows NT Server 4.0, Enterprise Edition 在我的机子测试一把,我的自己配置, 1G 内存, winXP 没有打开 3G 模式,sun 的 jdk 1.6 java -Xmxl447M -version,揪出错了, jrockitR27.1.0jdkl.5.0_08 为 1911M, 3G 模式 sun 的 jdk 没有变化,IBM J9 VM(build2.3,J2RE1.5.0IBMJ92.3WindowsXPx86-32j9vmwi3223-20060504 (JIT enabled) 3G 和 2G 相同,java -Xmxl787M -version 就出问题,jrockit-R27.1.0-jdkl.5.0_08为2899M,注意Xmx的内存不是物 理内存,我的 机子物理内存只有 1G。jrockit不愧为java第一虚拟机,只可惜不开源。今天分析了当前比较流行的几个不同公司不同版本JVM的最大内存,得出来的结 果如下:公司JVM版本 最大内存(兆)client最大内存(兆)serverSUN 1.5.x 1492 1520SUN 1.5.5(Linux) 2634 2660SUN 1.4.2 1564 1564SUN 1.4.2(Linux) 1900 1260IBM 1.4.2(Linux) 2047 N/ABEA JRockit 1.5 (U3) 1909 1902除非特别说明,否则JVM版本都运行在Windows操作系统下附:如何获得JVM的最大可用内存 在命令行下用 java -Xmx1200m -XX:MaxPermSize=60m -version 命令来进行测 试,然后逐渐的增大XXXX的值,如果执行正常就表示指定的内存大小可用,否 则会打印错误信息。最后得到的虚拟机实际分配到的总内存大小=堆内存+非堆内存1200m:为堆内存大小,如果不指定后者参数则有最大数限制,网上很多文章认 为这就是JVM内存,-Xmx为设置最大堆内存60m:为非堆内存大小,-XX:MaxPermSize实为永久域内存,在堆内存之外,属 于非堆内存部分,jdkl.5我测了好像默认为62m,即得到非堆部分默认内存)Sun HotSpot 1.4.1使用分代收集器,它把堆分为三个主要的域:新域、旧域以 及永久域。 SunJVM 生成的所有新对象放在新域中。一旦对象经历了一定数量的 垃圾收集循环后,便获得使用期并进入旧域。在永久域中Sun JVM则存储class 和method对象。就配置而言,永久域是一个独立域并且不认为是堆的一部分。实际发现版本上有细微差别的JDK最大容许内存值都不尽相同,因此在实际的应 用中还是要自己试验一下看到底内存能达到什么样的值。通过这个表想说明的是,如果你的机器的内存太多的话,只能通过多运行几个实 例来提供机器的利用率了,例如跑Tomcat,你可以多装几个Tomcat并做集群, 依此类推。三三三网友评论三三三东子 网友说:Windows下的最大内存应该跟NT内核对地址空间的保留也有关系,好像默认情 况下NT内核要占用高2G的地址空间,所以应用程序撑死能获得的内存不会超过 2G;记得有一个参数可以让NT只占1G内存,这样应用程序就有3G地址空间可 用,相应环境下JVM能允许的最大内存可能也会升高.at 05-10-06 00:04purpureleaf 网友说:windows的每个应用(不是寻址)的寻址空间一般是2g或者3g,取决于一个参 数。但是只要使用一组特定的函数分配内存,每个应用的寻址空间可以远远 超 过4gjdk可能是设置不了那个大的内存,但那不是windows造成的,是jdk造成的, 在linux上一样设置不了。看来做java的朋友对windows还是不熟

注意事项

本文(JVM内存最大能调多大分析)为本站会员(桔****)主动上传,金锄头文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即阅读金锄头文库的“版权提示”【网址:https://www.jinchutou.com/h-59.html】,按提示上传提交保证函及证明材料,经审查核实后我们立即给予删除!

温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




关于金锄头网 - 版权申诉 - 免责声明 - 诚邀英才 - 联系我们
手机版 | 川公网安备 51140202000112号 | 经营许可证(蜀ICP备13022795号)
©2008-2016 by Sichuan Goldhoe Inc. All Rights Reserved.