The reason for the memory dump being so big is that the application has mapped that much memory. It might not actually be "using" it, but it could mapped in the way of memory mapped files, or just "blank" (unused) space.
In terms of tools for analysing memory dumps, it depends entirely on what you're looking for and whether or not you know the internal data structures of the application you're analysing.
If this is a third party application, you do not have the source code for, and you're looking for sensitive data in the form of text - I would run the memory dump through the strings
program:
strings core
An idea could be to save this intermediate result, and use that for later searching:
strings core > text
grep searchstring text
If you want to have a tool that actually understands the contents of the memory dump (for example to differentiate between different types of memory mappings), you can use Rekall. Note that it is unfortunately no longer maintained for macOS.
xxd
andgrep
on MacOS. However I am thinking if there is any way to improve performance of searching in so big binary files. I used also Xcode and it has problem with searching exact number of results of specific string