You could try using the newer MATLAB APIs for XML Processing (MAXP) or readstruct rather than xmlread. Neither of these interfaces use Java under the hood.
However, there is still a possibility of out of memory issues if your XML file is too large relative to the amount of available memory on your machine.
MAXP Example:
import matlab.io.xml.dom.*
filename = "data.xml"
dom = parseFile(Parser, filename);
readstruct Example:
filename = "data.xml"
s = readstruct(filename);
Ultimately, if your XML file is too large to load into memory all at once, then you may need to use a streaming / "chunk"-based parsing approach. For example, you could try to leverage a SAX based Java parser or other third party SAX parser to only read parts of the file at a time to decrease maximum memory usage.