> Did you consider determining the default limit by inspecting the JVM's > runtime? > For example, in the broker, we set `maxMessagePublishBufferSizeInMB` to 1/2 > of direct memory, by default. > > I concede that this config is more complicated than a broker config since > we're talking about a client application. However, it seems like applications > with 1 GB memory would probably want a different setting than one with > 32 GB memory, and a fractional value could make the client work better > "out of the box." > > We cannot make everyone happy with a default value, so if this dynamic > default is too complicated to implement, I'm good with 64 MB. :)
The issue is that we don't know what are the application assumptions with respect to the memory. Eg; even if it's given 32GB to the JVM, it might want to use all of it. The other aspect is that after a point, increasing the memory size, won't increase the throughput anymore, and it will become just a waste of RAM.