解决方案 »
- 代理模式讨论
- 学习中遇到的问题 前辈帮忙解答
- Server.UrlEncode编码
- 关于Spring+Struts2整合时ActionSupport的问题,请大家指点一下
- WebLogic+oracle+ejb 异常求助!!! 期待高手指点。
- JBuilder2006开发问题,请求帮忙帮忙
- [200分]关于spring:bind的问题?急等!!!!!!!!!!!!!!!!
- OSGI开发的插件都打成一个标准的war包以Servlet Bridge方式部署
- apach+tomcat已经整合好,但有一些问题请大家帮忙!
- jbuilder2005+weblogic8的配置问题
- 怎么看待高校老师所做的科研项目,发表的科研论文和实际软件公司所开发的项目
- dwr技术实现注册用户 点一点聊天的问题
Tasks: 23 total, 1 running, 22 sleeping, 0 stopped, 0 zombie
Cpu(s): 0.0%us, 0.0%sy, 0.0%ni,100.0%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st
Mem: 1048576k total, 382920k used, 665656k free, 0k buffers
Swap: 0k total, 0k used, 0k free, 60232k cached
-XX:PermSize=128M -XX:MaxPermSize=128M
这样可以,而且也运行了那个jar,但一开始我就是这样设置,内存慢慢都被吃没了,当到420MB的时候,我ssh都连不上了,只能重启,才好是不是有内存泄露,。,我那个jar写的是sslsocket。但我和io有关的地方最后都close了啊。tomcat里能出现内存泄露吗?是不是和mysql不支持事务有关呢。
还有,什么叫“jvm如果内存泄漏,基本都是以00M收场”?
下面是top出来的所有进程,可以看到只有tomcat、jar、mysql的内存占用是最高的。一直如此,tomcat最高的时候达到了27%,mysql和jar还没有观察过。
当tomcat占到27%时,tomcat是这样设置的:JAVA_OPTS="-server -Xms128M -Xmx128M -Xss128k -XX:+AggressiveOpts -XX:+UseBiasedLocking -XX:PermSize=64M -XX:MaxPermSize=128M" PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
1 root 20 0 10368 396 364 S 0.0 0.0 0:00.44 init
2 root 20 0 0 0 0 S 0.0 0.0 0:00.00 kthreadd/111
3 root 20 0 0 0 0 S 0.0 0.0 0:00.00 khelper/111
107 root 16 -4 12636 304 260 S 0.0 0.0 0:00.00 udevd
469 root 20 0 5928 476 364 S 0.0 0.0 0:00.20 syslogd
485 root 20 0 62656 920 436 S 0.0 0.1 0:00.00 sshd
493 root 20 0 21660 556 360 S 0.0 0.1 0:00.00 xinetd
505 root 20 0 11944 660 404 S 0.0 0.1 0:00.00 mysqld_safe
614 mysql 20 0 417m 69m 2716 S 0.0 6.8 0:55.84 mysqld
633 root 20 0 20884 936 368 S 0.0 0.1 0:00.25 crond
718 root 20 0 16528 608 172 S 0.0 0.1 0:00.00 nginx
720 zoutuo 20 0 17076 1728 640 S 0.0 0.2 0:06.52 nginx
721 zoutuo 20 0 17244 1748 640 S 0.0 0.2 0:06.44 nginx
4045 zoutuo 20 0 205m 39m 9312 S 0.0 3.9 0:04.12 java
4068 zoutuo 20 0 517m 218m 9m S 0.0 21.3 0:17.71 java
4203 root 20 0 85948 3336 2616 S 0.0 0.3 0:00.01 sshd
4205 zoutuo 20 0 85948 1716 984 S 0.0 0.2 0:00.00 sshd
4206 zoutuo 20 0 12080 1724 1308 S 0.0 0.2 0:00.00 bash
4228 zoutuo 20 0 12628 1192 940 R 0.0 0.1 0:00.00 top
——没,我是说,你可以考虑吧Tomcat的这个参数调整小点;其实一般不设置这个参数,除非你的项目引用了太多太多的JAR包,或者用了大量的static量,从而导致非堆内存区不足彩需要加这个参数来调大。◎ 还有,什么叫“jvm如果内存泄漏,基本都是以00M收场”?
——OOM就是Out Of Memory 的异常,简称OOM。是Java获取不到足够内存时所抛出的异常,你可以这么干来得到这个异常,在Eclipse里面写个代码,死循环不断分配一个100KB的字节数组,然后把这个字节数组add到ArrayList里面去,这样JVM就会没法GC到任何内存,最后OOM嗝屁。◎ 当tomcat占到27%时,tomcat是这样设置的:JAVA_OPTS="-server -Xms128M -Xmx128M -Xss128k -XX:+AggressiveOpts -XX:+UseBiasedLocking -XX:PermSize=64M -XX:MaxPermSize=128M"
—— 这个配置,极限就是 128+128 = 256MB,另外再加上JVM自己占用的一些空间,总计估摸着不到300MB。而你的机器是1024MB,所以占 27% 左右也算正常。
我给你说一下我服务器的环境,请你帮我参谋一下参数什么的。1、mysql 这个不用说了,不过没做什么优化。。一直在跑默认
2、tomcat。里面跑的是一个小网站,很小但开了一个端口的SSL Socket服务端。我觉得应该没问题,在finally里是写了close的
3、一个jar文件,目的是接收文件。这个jar只做IO处理,和数据库啥的无关。
4、tomcat和jar的socket服务器端代码我晚上可以贴出来。服务器配置:
[zoutuo@zousServer ~]$ cat /proc/cpuinfo
processor : 0
vendor_id : GenuineIntel
cpu family : 6
model : 15
model name : Intel(R) Xeon(R) CPU 5160 @ 3.00GHz
stepping : 6
cpu MHz : 2992.452
cache size : 4096 KB
physical id : 0
siblings : 2
core id : 0
cpu cores : 2
apicid : 0
initial apicid : 0
fpu : yes
fpu_exception : yes
cpuid level : 10
wp : yes
flags : fpu vme de pse tsc msr pae mce cx8 apic mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx lm constant_tsc arch_perfmon pebs bts rep_good aperfmperf pni dtes64 monitor ds_cpl vmx est tm2 ssse3 cx16 xtpr pdcm dca lahf_lm tpr_shadow
bogomips : 5984.90
clflush size : 64
cache_alignment : 64
address sizes : 36 bits physical, 48 bits virtual
power management:[zoutuo@zousServer ~]$ free
total used free shared buffers cached
Mem: 1048576 397452 651124 0 0 40556
-/+ buffers/cache: 356896 691680
Swap: 0 0 0