java - JBoss 流口水的推荐设置

标签 java performance memory-management drools jvm-arguments

我们使用 drools 对大批量数据执行规则。

通过大批量数据,我的意思是我们将大量(5000-10000)的脂肪对象加载到 drools 中。

我们观察到 JVM 堆持续上升,规则执行开始下降。

我们是否有推荐的 JVM 选项或 API 来释放工作内存。

我正在使用 statefulKnowldegeSession 并在 fireRules() 之后调用 dispose()。

最佳答案

您(几乎可以肯定)经历的只是在堆上积累大量对象的影响,而您的事实只是冰山一角。

您是否需要在工作内存中同时存储所有 5k 到 10k 事实,例如,为了建立这些事实之间的关系?如果不是,一个合理的方法是在插入 1k 个事实后触发 AllRules。 (运行基准测试以确定最佳限制。)

然后您可以调用 dispose() 并重新创建 session ,这应该比手动撤回所有事实更快。

了解所有 10k 事实的循环性能也很有趣:

h = session.insert( f );
session.fireAllRules();
session.retract( h );

始终保持相同的 session 。

关于java - JBoss 流口水的推荐设置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25294647/

相关文章:

java - JUnit 测试沙箱没有网络和文件访问权限?

java - HTTP 基本身份验证 Java

c++ - 哪种方法更快 vector (插入然后排序)或设置?

sql - 可以依靠 SQL Server 调优顾问来生成索引吗?

c# - 如何有效地丢弃数组并用新值填充它?

java - java中的静态分配——堆、栈和永久代

java - 如何删除所有扩展 ASCII 字符,但不删除变音符号?

ios - 如何在 -dealloc 中正确释放 CGMutablePathRef?

c++ - 自定义数据大小以进行内存对齐

java - Java中如何合并两个数组?