I am writing an admin module. I created a collection and if the number of rows in the table are small it loads fine. Ultimately the table will have 250k rows in it and when I attempt to load the collection it exhausts memory. I was under the impression that Magento would lazy load collections. I also will probably need to know how to use the resource iterator in mage 2 as well. I can provide code samples but there is little more than a basic module skeleton at this point. I would greatly appreciate a code example of how to handle and iterate through a large collection.

Note: the collection is pulling from a custom table

Controller:`<?php
namespace Corra\Corraimportexport\Controller\Adminhtml\Import;

use Magento\Backend\App\Action;
use Magento\Backend\App\Action\Context;
use Corra\Corraimportexport\Model\WebcustomersFactory;

class Index extends \Magento\Backend\App\Action
{
    
    protected $_modelWebcustomersFactory;

    public function __construct(
        Context $context,
        WebcustomersFactory $modelWebcustomersFactory
    ) {
        parent::__construct($context);
        $this->_modelWebcustomersFactory = $modelWebcustomersFactory;
    }

	public function execute()
	{

		$webcustomersModel = $this->_modelWebcustomersFactory->create();
 
        // Load the item with ID is 1
        /*$item = $webcustomersModel->load(976);
        var_dump($item->getData());*/
 
        // Get webcustomers collection
        $webcustomersCollection = $webcustomersModel->getCollection();
        
        var_dump($webcustomersCollection->count());
        die();
        // Load all data of collection
        foreach ($webcustomersModel->getCollection() as $key => $webcustomer) {
            var_dump($webcustomer->getData());
            die();
        }

		$this->_view->loadLayout();
		$this->_view->renderLayout();
	}

}

<?php

namespace Corra\Corraimportexport\Model;

use \Magento\Framework\Model\AbstractModel;
 
class Webcustomers extends AbstractModel
{
    /**
     * Define resource model
     */
    protected function _construct()
    {
        $this->_init('Corra\Corraimportexport\Model\ResourceModel\Webcustomers');
    }
}

<?php
 
namespace Corra\Corraimportexport\Model\ResourceModel;
 
class Webcustomers extends \Magento\Framework\Model\ResourceModel\Db\AbstractDb
{
    /**
     * Define main table
     */
    protected function _construct()
    {
        $this->_init('web_customers', 'entity_id');
    }
}

<?php 

namespace Corra\Corraimportexport\Model\ResourceModel\Webcustomers;

use \Magento\Framework\Model\Resource\Db\Collection\AbstractCollection;
 
class Collection extends \Magento\Framework\Model\ResourceModel\Db\Collection\AbstractCollection
{
    /**
     * Define model & resource model
     */
    protected function _construct()
    {
        $this->_init(
            'Corra\Corraimportexport\Model\Webcustomers',
            'Corra\Corraimportexport\Model\ResourceModel\Webcustomers'
        );
    }
}`