300mb memory limit is on a VM having -XmX 4Gb for heap; on 8Gb (most likely) it was more. While I totally agree 300 Mb memory limit is far from the optimal setting, and even better per-destination limits are needed.
However, I have stress tested ActiveMQ with much less memory, and I've seen the following in logs: topic://topic-3, Usage Manager memory limit reached 5242880. Producers will be throttled to the rate at which messages are removed from this destination to prevent flooding it. << just 5Mb of memory limit on this test! .. and eventually this: TopicSubscription: consumer=ID:a-thinkpad-44715-1532031318503-1:1:1:1, destinations=1, dispatched=32766, delivered=15963293, matched=1460, discarded=0, prefetchExtension=0: Pending message cursor [org.apache.activemq.broker.region.cursors.FilePendingMessageCursor@6bba423c] is full, temp usag (100%) or memory usage (0%) limit reached, blocking message add() pending the release of resources. << all 10Gb of temp store filled! Which means filling up temp store and blocking the producer, but NOT crashing with out of memory, having all heap filled with PageFile-related data. - Art -- Sent from: http://activemq.2283324.n4.nabble.com/ActiveMQ-User-f2341805.html