我用java编写了一个游戏的服务器端,开发了十多个游戏服务器端。需要一个个启动。
但是很奇怪的是启动脚本在有的机器上能够运行,但是在有的机器上运行5个后,就提示分配不了内存。
我一共1G内存阿,我看了一下资源占用情况,系统一共才使用了300M啊。为什么不分配剩余的700M呢?
我仔细对比了一下,发现能够运行全部的那个安装了weblogic8.14。不能运行正常的没有安装weblogic 8.14。到底怎么回事?难道weblgic可以分配更多内存给java?
但是很奇怪的是启动脚本在有的机器上能够运行,但是在有的机器上运行5个后,就提示分配不了内存。
我一共1G内存阿,我看了一下资源占用情况,系统一共才使用了300M啊。为什么不分配剩余的700M呢?
我仔细对比了一下,发现能够运行全部的那个安装了weblogic8.14。不能运行正常的没有安装weblogic 8.14。到底怎么回事?难道weblgic可以分配更多内存给java?
1G 内存
出错经过如下。
第一个用户管理平台启动
D:\game\release\user\bin>java -Xms32m -Xmx64m -classpath ../lib/log4j-1.2.7.jar;
../lib/platform.jar;../lib/xerces.jar;../lib/mm.mysql-2.0.4-bin.jar;../lib/user.j
ar com.userserver.UserManager
成功,没问题。
第二个游戏管理
D:\game\release\gms\bin>java -classpath ../lib/log4j-1.2.7.jar;../lib/platform.j
ar;../lib/xerces.jar;../lib/mm.mysql-2.0.4-bin.jar;../lib/gms.jar com.gamemanage
r.GameManager
成功启动没问题
....
....
直到第五个
D:\game\release\xiangqi\bin>java -Xms32m -Xmx64m -classpath ../lib/log4j-1.2.7.
jar;../lib/platform.jar;../lib/xerces.jar;../lib/mm.mysql-2.0.4-bin.jar;../lib/g
rs.jar;../lib/sgjq.jar com.room.BoutGameRoom
Exception in thread "main" java.lang.OutOfMemoryError: unable to create new nati
ve thread
at java.lang.Thread.start(Native Method)
at com.platform.threadpool.WorkerThread.startThread(WorkerThread.java:37
)
at com.platform.threadpool.WorkerThread.<init>(WorkerThread.java:24)
at com.platform.threadpool.ThreadPoolManager.init(ThreadPoolManager.java
:33)
at com.platform.threadpool.ThreadPoolManager.init(ThreadPoolManager.java
:54)
at com.platform.serverengine.CServerEngine.startServerEngine(CServerEngi
ne.java:106)
at com.room.BoutGameRoom.SystemStart(BoutGameRoom.java:183)
at com.room.BoutGameRoom.startServer(BoutGameRoom.java:213)
at com.room.BoutGameRoom.main(BoutGameRoom.java:2533)
出错,这时,系统性能显示内存占用500M左右,但是我是1G的内存啊。
并且出错信息看好像是因为因为内存限制导致生成不了线程。
这时打开任何一个窗口都困难,进行任何操作都很困难。
很是奇怪,为什么其他500M内存用不上呢?
难道由某个地方可以设置系统分配给java的内存数量?