LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 1433|回复: 3

求助 linux 上java 服务的内存使用情况

[复制链接]
发表于 2011-3-28 18:50:56 | 显示全部楼层 |阅读模式
我运行一个 resin 的实例 并在上面部署一个web 服务
  

启动参数如下 :
/opt/j2sdk/bin/java -server -Xms1500M -Xmx1500M -Xss256K -XX:ThreadStackSize=256 -verbosegc -XX:+Print***etails -XX:+UseParallelGC -XX:+PrintGCTimeStamps -XXermSize=64m -XX:MaxPermSize=256m -Djava.library.path=/opt/resin/libexec:/opt/j2sdk/lib:/usr/lib64 -Djmagick.systemclassloader=false -Dresin.home=/opt/resin -Dserver.root=/opt/resin -Djava.util.logging.manager=com.caucho.log.LogManagerImpl -Djavax.management.builder.initial=com.caucho.jmx.MBeanServerBuilderImpl com.caucho.server.resin.Resin -socketwait 63610 -conf ...


我这里设置的-Xms1500M -Xmx1500M  但是在应用服务器执行一段时间后 出现 高swap ,且 top 参看改进程时:

           VIRT 4781m  RES 3.0g

为什么实际执行中会占用 那么多内存。。

很悲剧 resin log 里面什么都没有 。
 楼主| 发表于 2011-3-31 23:36:45 | 显示全部楼层
这里可真清净。 我后来查了以下 nio 有可能导致这种情况
回复 支持 反对

使用道具 举报

发表于 2011-4-2 19:43:22 | 显示全部楼层
-server

问题在这个参数,用了这个参数虚拟机会从系统里申请大量内存作内存池,就算不需要了也不释放,等待後面的操作占用这个内存
回复 支持 反对

使用道具 举报

发表于 2012-1-25 00:33:12 | 显示全部楼层
Post by lyih_tom_com;2132948
这里可真清净。 我后来查了以下 nio 有可能导致这种情况


nio操作的是堆外空间,有可能会导致内存无法释放。
注意到有高swap的情况,更大的肯能是Java代码中有类似调用外部进程/脚本的代码
  1. Runtime.getRuntime.exec
复制代码

这种方式代价太大,Java进程会先fork,再执行外部进程,所以内存会出现double的情况。

3楼说的情况不相关。-server是服务器(2核/4GB内存)的默认选项。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表