All kinds of things.
Consider, for example, that your rows have 10 text columns, which are represented as a simple Java Bean with 10 string fields.
A String has 4 fields: a char [] and 3 ints.
A String is a descendant of Object that has 1 int and a reference to its class.
On a 64-bit JVM, these links can be 8 bytes (but not necessarily, but we will stick to this for the sake of argument).
A 10-character string will have char [10] and 3 spaces, each of which has 4 bytes.
char [10] - a pointer to an array. The array should track its length, which is probably another 4 bytes, as well as an object (thus a class pointer and another int) plus data. But characters in Java are represented as UTF-16 internally, 2 bytes per character. So the actual array for 10 characters takes 24 bytes. And the reference to this array is a pointer.
So, one instance of String: 8 + 4 for Object, 8 + 4 + 4 + 4 for the string itself and 8 + 4 + 20 for actual data or 62 bytes.
Your Bean has 10 string fields, and the Object object is also expanded, so 8 + 4 + (10 * 8).
So, one row from your database, for 100 characters of text, is 8 + 4 + (10 * 8) + (10 * 62), which equals 712 bytes.
These are not ideal numbers, I can’t talk specifically about how arrays are stored, and object references may not be 8 bytes on a 64-bit JVM.
But this gives you some idea of the overhead associated with this. And this is just for your raw data. If you have these lines stored in an ArrayList, then there 70,000 * 8 just point to your objects - 560K just for structure.