我正在使用在Eclipse Kepler SR2中运行的Google App Engine v.1.9.1 Java版。我有JDK 1.7。我的logging.properties仅将日志发送到java.util.logging.ConsoleHandler
。
在Eclipse [/ edit]中运行的我的[edit]开发服务器从另一台服务器接收大量数据,然后将其转储到数据库中。这会生成大量日志。我只用了几个小时就得到了OutOfMemoryError。
我已经运行了JProfiler,并且我发现保留的对象是com.google.apphosting.api.logservice.LogServicePb$LogLine
。不知何故,这种情况不会被丢弃,将数百万个实例保存在内存中。
当然,我可以减少记录的数据量,但这只会延迟问题。
我到处寻找如何清除日志行,但我找不到任何设置。唯一可用的选项是Python而不是Java。
知道造成这种情况的原因以及如何解决这个问题?
答案 0 :(得分:0)
正如@Martin Berends所说,Eclipse中的开发服务器仅用于开发。似乎日志语句保存在该环境的内存中。将应用程序移动到测试服务器后,内存使用量似乎持平。
所以底线是;在开发环境中运行时,减少记录量并偶尔重新启动服务器以避免OutOfMemoryError
。其次,在真正的测试服务器上进行测试。