SER / DES? The size?
No, the main limitation of transport philosophy matters.
You started with a size of 0.1 GB for the transport load and reported a JSON -library distribution to force your O / S to kill the process.
Then, in another entry, you requested 0.762 GB for the transport load.
But in the ZeroMQ transport orchestration, ZeroMQ is a slightly more important issue than choosing the policy of an external SER/DES data serializer.
No one can forbid you from trying to send as many BLOB as possible, while the JSON -decorated line has already shown you the dark side of such approaches, there are other reasons not to continue this path forward.
ZeroMQ cannot be a large and powerful toolbox. However, it takes some time to get the understanding necessary for truly smart and high-performance code deployment, which makes the most out of this powerful workhorse.
One of the side effects of the multifunctional internal ecosystem “under the hood” is the not-so-well-known policy hidden in the concept of message delivery.
You can send any message of a reasonable size, while delivery is not guaranteed. He is completely , or nothing , as stated above, nothing is guaranteed.
Uch ?!
Yes , not guaranteed.
Based on this basic philosophy of Zero-Guarrantee, due care must be taken to decide on steps and measures, especially if you plan to move Gigabyte BEASTs back and forth.
In this sense, it can be quantitatively supported by the real SUT test, that messages of a small size can be transported (if you still need to move GB (see the comment above in the OP section) and have no other choice) the entire amount of data segmented by more small pieces with errors associated with the error, resulting in a much faster and much more secure end solution than trying to use a dead end and instruct the code to dump some GB of data on any of the available resources out there (the principle of the Copy-the Zero ZeroMQ n may not be able to save you in this effort).
For more information about another hidden trap associated with the incomplete implementation of Zero-Copy, read Martin SUSTRIKA, co-father of ZeroMQ , notes on null copying "up-core-border-only" (so at least double the allocation of memory space, expected ...).
Decision:
Redesign your architecture to distribute small messages if you don’t keep the original datastructure mirrored in remote processes, rather than trying to keep one-time giga transfers alive.
Best next step?
While this does not solve the problem with several SLOC -s, the best thing is if you seriously invest your intellectual abilities in distributed processing - this is to read Pieter HINTJEN lovely book "Code Connected, Volume 1"
Yes, it takes some time to create your own understanding, but in many aspects it will lead you to another level of professional code design. Worth the time. Worth the effort.