You are making to many copies of the data, and this is causing you to run out of memory.
You should be directly writing into your ZipOutputStream
in your first loop.
ZipEntry entry = new ZipEntry(fileName);
zos.putNextEntry(entry);
for (String s : nodeStringArray) {
zos.write(s.getBytes("UTF-8"));
}
zos.closeEntry();