我使用spring批量来监控Rabbit MQ
。我试图通过每秒运行批次来减轻压力。到目前为止,它正在顺利运行,但已使用的Perm Generation space
正在不断增长。当批处理开始时,30 MB
现在30 Hours
运行后300 MB
处于org.hsqldb.persist.RowStoreAVLMemory 28619232
org.hsqldb.Database 96661000
。占用内存的最大对象是
HSQLDB
这两个对象占
任何人都可以建议如何配置from collections import defaultdict
keys,types = defaultdict(int), defaultdict(int)
for jline in yourjsonfile.readlines():
line=json.loads(jline)
keys[line['key']] += 1
types[line['type']] += 1
不能保存超过5分钟的信息,因为我们没有任何要求重新启动的工作。
答案 0 :(得分:0)
您正在使用HSQLDB和默认的all-in-memory表。所有数据都保存在内存中。这种类型的表允许非常快速的操作,非常适用于数据不会超出一定限制的用例。
您可以添加任务以定期删除旧行。这可以是在增长的表上声明的TRIGGER,它会在插入新行后根据其时间戳删除旧行。
或者,您可以使用CACHED表,它主要将数据保存在磁盘上。您可以将;hsqldb.default_table_type=cached
添加到JDBC连接URL的末尾。在这种情况下,URL必须指示基于文件的数据库,而不是内存数据库。
因此,如果您愿意,HSQLDB的行为方式与外部数据库相同。