0

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

任何帮助将不胜感激...

4

1 回答 1

0

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

其中 str1 作为 PermGen 的一部分不可回收,而其他 str2 在堆内存空间中。

于 2012-10-24T16:33:19.823 回答