I have a straitforward menu loader:
<?php
$items[$root . '/snapshot/%cim_snapshot'] = array(
'title'=> 'Snapshot details',
'page callback'=> 'cim_admin_snapshot_view',
'page arguments'=> array(5),
'access arguments'=> array('administer snapshots'),
'file'=> 'cim.admin.inc',
);
?>
However, cim_snapshot_load ends up being called 8 times. Seems like it gets called from all over the place, I've created a list of semi-readable, poor-mans backtraces:
drupal_handle_request -> Symfony\Component\HttpKernel\Kernel::handle -> Drupal\Core\HttpKernel::handle -> Symfony\Component\HttpKernel\HttpKernel::handle -> Symfony\Component\HttpKernel\HttpKernel::handleRaw -> Symfony\Component\EventDispatcher\ContainerAwareEventDispatcher::dispatch -> Symfony\Component\EventDispatcher\EventDispatcher::dispatch -> Symfony\Component\EventDispatcher\EventDispatcher::doDispatch -> call_user_func -> Drupal\Core\EventSubscriber\LegacyRequestSubscriber::onKernelRequestLegacy -> menu_set_custom_theme -> menu_get_custom_theme -> menu_get_item -> _menu_translate -> _menu_load_objects -> cim_snapshot_load
drupal_handle_request -> Symfony\Component\HttpKernel\Kernel::handle -> Drupal\Core\HttpKernel::handle -> Symfony\Component\HttpKernel\HttpKernel::handle -> Symfony\Component\HttpKernel\HttpKernel::handleRaw -> Symfony\Component\EventDispatcher\ContainerAwareEventDispatcher::dispatch -> Symfony\Component\EventDispatcher\EventDispatcher::dispatch -> Symfony\Component\EventDispatcher\EventDispatcher::doDispatch -> call_user_func -> Drupal\Core\EventSubscriber\ViewSubscriber::onView -> Drupal\Core\EventSubscriber\ViewSubscriber::onHtml -> drupal_render_page -> block_page_build -> block_get_blocks_by_region -> _block_get_renderable_region -> Drupal\Core\Entity\Entity::access -> Drupal\block\BlockAccessController::viewAccess -> Drupal\block\BlockBase::access -> Drupal\system\Plugin\block\block\SystemHelpBlock::blockAccess -> menu_get_active_help -> menu_tab_root_path -> menu_local_tasks -> _menu_translate -> _menu_load_objects -> cim_snapshot_load
drupal_handle_request -> Symfony\Component\HttpKernel\Kernel::handle -> Drupal\Core\HttpKernel::handle -> Symfony\Component\HttpKernel\HttpKernel::handle -> Symfony\Component\HttpKernel\HttpKernel::handleRaw -> Symfony\Component\EventDispatcher\ContainerAwareEventDispatcher::dispatch -> Symfony\Component\EventDispatcher\EventDispatcher::dispatch -> Symfony\Component\EventDispatcher\EventDispatcher::doDispatch -> call_user_func -> Drupal\Core\EventSubscriber\ViewSubscriber::onView -> Drupal\Core\EventSubscriber\ViewSubscriber::onHtml -> drupal_render_page -> block_page_build -> block_get_blocks_by_region -> _block_get_renderable_region -> Drupal\Core\Entity\Entity::access -> Drupal\block\BlockAccessController::viewAccess -> Drupal\block\BlockBase::access -> Drupal\system\Plugin\block\block\SystemHelpBlock::blockAccess -> menu_get_active_help -> menu_tab_root_path -> menu_local_tasks -> _menu_translate -> _menu_load_objects -> cim_snapshot_load
drupal_handle_request -> Symfony\Component\HttpKernel\Kernel::handle -> Drupal\Core\HttpKernel::handle -> Symfony\Component\HttpKernel\HttpKernel::handle -> Symfony\Component\HttpKernel\HttpKernel::handleRaw -> Symfony\Component\EventDispatcher\ContainerAwareEventDispatcher::dispatch -> Symfony\Component\EventDispatcher\EventDispatcher::dispatch -> Symfony\Component\EventDispatcher\EventDispatcher::doDispatch -> call_user_func -> Drupal\Core\EventSubscriber\ViewSubscriber::onView -> Drupal\Core\EventSubscriber\ViewSubscriber::onHtml -> drupal_render_page -> block_page_build -> block_get_blocks_by_region -> _block_get_renderable_region -> Drupal\Core\Entity\Entity::access -> Drupal\block\BlockAccessController::viewAccess -> Drupal\block\BlockBase::access -> Drupal\system\Plugin\block\block\SystemHelpBlock::blockAccess -> menu_get_active_help -> menu_tab_root_path -> menu_local_tasks -> _menu_translate -> _menu_load_objects -> cim_snapshot_load
drupal_handle_request -> Symfony\Component\HttpKernel\Kernel::handle -> Drupal\Core\HttpKernel::handle -> Symfony\Component\HttpKernel\HttpKernel::handle -> Symfony\Component\HttpKernel\HttpKernel::handleRaw -> Symfony\Component\EventDispatcher\ContainerAwareEventDispatcher::dispatch -> Symfony\Component\EventDispatcher\EventDispatcher::dispatch -> Symfony\Component\EventDispatcher\EventDispatcher::doDispatch -> call_user_func -> Drupal\Core\EventSubscriber\ViewSubscriber::onView -> Drupal\Core\EventSubscriber\ViewSubscriber::onHtml -> drupal_render_page -> block_page_build -> block_get_blocks_by_region -> _block_get_renderable_region -> Drupal\Core\Entity\Entity::access -> Drupal\block\BlockAccessController::viewAccess -> Drupal\block\BlockBase::access -> Drupal\system\Plugin\block\block\SystemHelpBlock::blockAccess -> menu_get_active_help -> menu_tab_root_path -> menu_local_tasks -> _menu_translate -> _menu_load_objects -> cim_snapshot_load
drupal_handle_request -> Symfony\Component\HttpKernel\Kernel::handle -> Drupal\Core\HttpKernel::handle -> Symfony\Component\HttpKernel\HttpKernel::handle -> Symfony\Component\HttpKernel\HttpKernel::handleRaw -> Symfony\Component\EventDispatcher\ContainerAwareEventDispatcher::dispatch -> Symfony\Component\EventDispatcher\EventDispatcher::dispatch -> Symfony\Component\EventDispatcher\EventDispatcher::doDispatch -> call_user_func -> Drupal\Core\EventSubscriber\ViewSubscriber::onView -> Drupal\Core\EventSubscriber\ViewSubscriber::onHtml -> drupal_render_page -> block_page_build -> block_get_blocks_by_region -> _block_get_renderable_region -> Drupal\Core\Entity\Entity::access -> Drupal\block\BlockAccessController::viewAccess -> Drupal\block\BlockBase::access -> Drupal\system\Plugin\block\block\SystemHelpBlock::blockAccess -> menu_get_active_help -> menu_tab_root_path -> menu_local_tasks -> _menu_translate -> _menu_load_objects -> cim_snapshot_load
drupal_handle_request -> Symfony\Component\HttpKernel\Kernel::handle -> Drupal\Core\HttpKernel::handle -> Symfony\Component\HttpKernel\HttpKernel::handle -> Symfony\Component\HttpKernel\HttpKernel::handleRaw -> Symfony\Component\EventDispatcher\ContainerAwareEventDispatcher::dispatch -> Symfony\Component\EventDispatcher\EventDispatcher::dispatch -> Symfony\Component\EventDispatcher\EventDispatcher::doDispatch -> call_user_func -> Drupal\Core\EventSubscriber\ViewSubscriber::onView -> Drupal\Core\EventSubscriber\ViewSubscriber::onHtml -> drupal_render_page -> drupal_render -> theme -> shortcut_preprocess_page -> drupal_get_title -> menu_get_active_title -> menu_get_active_trail -> menu_set_active_trail -> menu_link_get_preferred -> _menu_translate -> _menu_load_objects -> cim_snapshot_load
drupal_handle_request -> Symfony\Component\HttpKernel\Kernel::handle -> Drupal\Core\HttpKernel::handle -> Symfony\Component\HttpKernel\HttpKernel::handle -> Symfony\Component\HttpKernel\HttpKernel::handleRaw -> Symfony\Component\EventDispatcher\ContainerAwareEventDispatcher::dispatch -> Symfony\Component\EventDispatcher\EventDispatcher::dispatch -> Symfony\Component\EventDispatcher\EventDispatcher::doDispatch -> call_user_func -> Drupal\Core\EventSubscriber\ViewSubscriber::onView -> Drupal\Core\EventSubscriber\ViewSubscriber::onHtml -> drupal_render_page -> drupal_render -> theme -> shortcut_preprocess_page -> drupal_get_title -> menu_get_active_title -> menu_get_active_trail -> menu_set_active_trail -> _menu_link_translate -> _menu_load_objects -> cim_snapshot_load