论坛首页 Java企业应用论坛

Java启动后内存达到2G

浏览 18762 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2011-08-06  


我的环境是Suse10 x86_64(8核,16G内存)的环境,jdk也是64位的,部署在jboss5.1,现在启动系统后,java占用的物理内存即达到2个G,但奇怪的是,我换成32位的jdk后,内存就在1G上下,不知道大家是否遇到过这个问题呢?

以下是我配置:



-Xms1024m -Xmx2048m -XX:MaxPermSize=512m -Xss128k -XX:+UseParallelGC -XX:ParallelGCThreads=8 -XX:+UseParallelOldGC
   发表时间:2011-08-06  
64位默认-server 32位默认-client
0 请登录后投票
   发表时间:2011-08-07  
-Xms1024m
0 请登录后投票
   发表时间:2011-08-07  
http://www.iteye.com/topic/53113

主题:试用一把64位JVM,未见性能提升,还有明显下降

贴子右上角的链接
0 请登录后投票
   发表时间:2011-08-07  
-Xms1024m -Xmx2048m -XX:MaxPermSize=512m -Xss128k -XX:+UseParallelGC -XX:ParallelGCThreads=8 -XX:+UseParallelOldGC
---------------------------------------------------------
别的不说,这些参数配置有点不好,如果是HotSpot jdk -Xms -Xmx一般设置为一般大小,-Xss128k有点小吧?-XX:+UseParallelOldGC貌似默认新生代就是ParallelGC, -XX:+UseParallelGC参数多余
0 请登录后投票
   发表时间:2011-08-08   最后修改:2011-08-08
richard_2010 写道
-Xms1024m -Xmx2048m -XX:MaxPermSize=512m -Xss128k -XX:+UseParallelGC -XX:ParallelGCThreads=8 -XX:+UseParallelOldGC
---------------------------------------------------------
别的不说,这些参数配置有点不好,如果是HotSpot jdk -Xms -Xmx一般设置为一般大小,-Xss128k有点小吧?-XX:+UseParallelOldGC貌似默认新生代就是ParallelGC, -XX:+UseParallelGC参数多余


这个不能一概而论。要知道不同厂商JDK,都是有自己的特色的,包括GC的回收策略。
对于SUN JDK来说“ -Xms -Xmx一般设置为一般大小”这个说法还可以,但是对于IBM JDK来说,反而推荐“-Xms1024m -Xmx2048m”这样的设置了。这个还是看要具体情况而定。
0 请登录后投票
   发表时间:2011-08-08  
zlowly 写道
richard_2010 写道
-Xms1024m -Xmx2048m -XX:MaxPermSize=512m -Xss128k -XX:+UseParallelGC -XX:ParallelGCThreads=8 -XX:+UseParallelOldGC
---------------------------------------------------------
别的不说,这些参数配置有点不好,如果是HotSpot jdk -Xms -Xmx一般设置为一般大小,-Xss128k有点小吧?-XX:+UseParallelOldGC貌似默认新生代就是ParallelGC, -XX:+UseParallelGC参数多余


这个不能一概而论。要知道不同厂商JDK,都是有自己的特色的,包括GC的回收策略。
对于SUN JDK来说“ -Xms -Xmx一般设置为一般大小”这个说法还可以,但是对于IBM JDK来说,反而推荐“-Xms1024m -Xmx2048m”这样的设置了。这个还是看要具体情况而定。

0 请登录后投票
   发表时间:2011-08-08  
-Xms1024m ,我试过-Xms2048m,效果差不多,系统启动起来后,-Xms1024m的配置大约在1.8G上下, Xms2048m在2.1G左右。
“64位默认-server 32位默认-client” ,是什么意思呢?

0 请登录后投票
   发表时间:2011-08-08  
主要是因为以前系统一直用的是32位的jdk,启动起来后内存大概才1G左右;现在就只将jdk换成了64位的,其他未动,不知道为什么启动后就2G了。JVM配置也未改过。
0 请登录后投票
   发表时间:2011-08-08  
justmoon 写道
主要是因为以前系统一直用的是32位的jdk,启动起来后内存大概才1G左右;现在就只将jdk换成了64位的,其他未动,不知道为什么启动后就2G了。JVM配置也未改过。

你配置jvm参数的时候没有声明jvm类型 是-server还是-client,这样就由jvm自动选择。

jvm类型是server 还是client由server-class machine 决定。
server-class machine 的判断标准
1. 2个或者两个以上的cpu
2  2g以上的物理内存
This definition of a server-class machine applies to all platforms, with the exception of 32-bit platforms running a
version of the Windows operating system.
由于jvm的server和client类型在初始化的时候有很大不同,如垃圾回收器是否是并行的之类的等等,所以初始时所用的内存大小也不同。

查看jvm类型的最直接方式 java -version 命令
Java HotSpot(TM) 64-Bit Server VM (build 17.0-b16, mixed mode)  server
Java HotSpot(TM) Client VM (build 19.1-b02, mixed mode, sharing)  client

参考
Memory Management in the JavaHotSpot™ Virtual Machine 第五章Ergonomics -- Automatic Selections and Behavior Tuning





0 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics