unable to create new native thread

fwuwen 2013-12-31
线上一个tomcat的情景
linux-64 jdk7 64
jvm配置:
-Xmx1g -Xmx2g -Xss200k 

ulimit -n 65535
ulimit -u 409600
ulimit -s 10240

free -g

             total       used       free     shared    buffers     cached
Mem:            23         22          0          0          0         15
-/+ buffers/cache:          7         16
Swap:            0          0          0

如果系统剩余内存都在cache中的时候 jvm是不是就无法分配内存了

求指点 谢谢
xiaoyu1985ban 2014-01-06
在Linux操作系统中,cached是为了提升磁盘的存取效率而做的系统级缓存
如果应用中涉及到大量的操作磁盘文件,使得这个缓存逐渐变得比较大
其对当前已经运行的Java程序没有影响,只是若要在当前条件下运行新的需要内存的程序
会有些问题,要么导致程序运行缓慢,要么导致程序启动不了(Java程序启动时得不到最小可用堆内存或PermGen内存)。


首先执行同步命令:sync,将缓存数据同步至磁盘
再执行命令:echo 1 > /proc/sys/vm/drop_caches 清理缓存

清理之后再看看。
内存在cache里没影响, 需要的时候自己就释放了

你 cat /proc/sys/kernel/pid_max 看一下, 这个控制了最大的可用pid数量(默认值会远远小于你的409600, 大约是65535, 或者更小些, 32768)
Global site tag (gtag.js) - Google Analytics