The class "com.hp.hpl.jena.reasoner.rulesys.impl.LPBRuleEngine" uses an in-memory cache named "tabledGoals", which has no limit as to the size/number of entries stored.
We have experienced out-of-memory issues because of the cache being filled with millions of entries in just a few days under normal query usage conditions and a heap memory set to 3GB.
In our setup, we have a dataset containing multiple graphs, some of them are actual data graphs (backed by TDB), and then there are two which are ontology models using a "TransitiveReasoner" and an "OWLMicroFBRuleReasoner", respectively. A typical query may run over all the graphs in the dataset, including the ontology ones (see below for a query template). Eventhough the ontology graphs would not yield any additional results for data queries (which is fine), the above mentioned cache would still fill up with new entries.
As there is no upper bound to the cache, soon or later all available heap memory will be consumed by the cache, giving rise to an out-of-memory criticial error.