Many other apps will claim their portion of 1GB, and you have to have enough free RAM to make garbage collection efficient.
Your app can only get 24 MB for its entire process. Some of it must be kept free for GC, and some of it is taken by other classes, data, and uncollected garbage.
Parsed JSON is essentially a number of nested lists and hashes. Assume that every (boxed) number takes 4-16 bytes, each entry in a hashtable takes another 4-8 bytes for hash + 4 bytes for pointer, plus some overhead due to load factor below 1, strings become UCS2 even if ASCII would be enough, etc. Long JSON with many small objects can easily take 10x the RAM.
Try not to parse the entire file into memory, unless you need the whole of it in RAM for operation. Try streaming parser and writing things into a database.