db table == class (in disk)
one row result of record == one object (in memory)
multiple rows in the result set == an array of multiple objects (in memory)
All the memory overhead you mentioned above remain the same no matter ORM (Object Relational Mapping) is used or not. Because, when you don't use ORM, you keep result set or cursor in memory. In case of ORM, that is converted in the (array of) object(s). Indeed,
there is little memory overhead when it is converted into the object. Also,
there is some time overhead as well. But, this is the cost of getting additional flexibility, ease of programming and other benefits that we get when we use ORM.