[eluser]WanWizard[/eluser]
The objects don't use that much memory, they all share a common class definition.
Offcourse, if you run a query that returns 1000 rows, you'll get 1000 objects. That's the way an ORM works. If you only retrieve them to iterate over them, use get_iterated(), which only fetches one at the time, and doesn't store all results in memory. And always query exactly what you need, don't just pull the database and then ignore the rest.
To convert objects to array's, use the array extension, which gives you the methods to_array() which converts the current object, and all_to_array() which converts all query results.
Nothing stops you from converting the array extension to an object extension, which returns a data object or array of objects. You can also add this as a feature request on bitbucket.
This is the way Datamapper works, it uses object models which encapsulate the data. However, there is no difference in handling the object between a DM object, and an object containing only data.