处理完doGet请求后,使用的堆不会收缩

时间:2012-10-24 12:24:56

标签: servlets heap

我有一个java客户端,每当用户点击按钮时,就会调用服务器上的servlet(获取请求)。服务器从数据库获取一些数据,生成一个文件并将一个布尔值发送回客户端,说明文件是否已成功创建。 我面临的问题是,每次用户点击按钮(客户端)时,服务器堆都会增加大约50MB,并且当成功处理doGet请求时,它永远不会缩减到请求之前的大小。 我错过了什么吗?我应该以某种方式关闭客户端的连接吗?如何说服服务器在处理doGet请求时解除分配他创建的对象?

非常感谢任何帮助......

1 个答案:

答案 0 :(得分:0)

您是否在finalize块中明确释放了内存资源? 明智地使用finally和finalize可以帮助您释放额外的资源/内存空间。请在这里复制您的代码以获得一些内存建议。 这将有助于纠正您是否不必使用PermGen空间而不是HeapSpace内存。例如,如果你使用它会有所不同 String str1 =“foo”;和Vs String str2 = new(“foo”);

其中str1不是垃圾可收集的,是其他str2在堆内存空间中的一部分。