有一个项目要求,进行性能测试,每两秒钟服务器端和客户端互发15000字节随机数据,服务器端接收到数据后,进行数据统计,然后将接收的数据数组设为null,抛弃,调用System.gc前,接收到1330万左右的数据出现内存溢出,调用System.gc后接收到2600万左右的数据出现内存溢出,这个究竟是怎么回事,我并没有进行数据的保存,而且发送的数据是固定的随机数组,数据初始化后没有再new过,内存溢出应该是接收的问题,可是JVM参数设置如下:-Xms512m -Xmx512m -Xss4m -Xincgc -Xloggc:gc.log应该说比较大了,为什么会出现这个问题?求达人解答
比如说大量的字符串+运算 但是没有用到stringbuffer 或者是运算中大量生成了新对象
objectArr=((Object[])o);
System.out.println("receive data length:"+objectArr.length);
receiveBytes+=objectArr.length;
o=null;
objectArr=null;
System.gc();
System.out.println("by "+getNowTime()+" receive "+receiveBytes+" bytes");
这是接收部分的全部代码
原来做过一个项目 一开始也是没注意 就是拼一个url地址 结果也是内存溢出 找了好久才发现 我那个数据量也不大
我觉得你如果有字符串运算的话 可以先把这些屏蔽掉 然后再测 如果没问题 证明就是字符串惹的祸
http://blog.csdn.net/Arthur0088/archive/2010/01/06/5143813.aspx