Do I need to manually destroy the EntityFieldQuery object? I'm using an EFQ object inside a foreach loop:

  //bundle those terms with nodes they each have
  foreach($relevantTerms as $dishType)
  {
    $nodeQuery = new EntityFieldQuery();

    $entities = $query-&gt;entityCondition('entity_type', 'node')
      -&gt;entityCondition('bundle', 'food_menu_item')
      -&gt;propertyCondition('status', 1)
      -&gt;execute();

    $nodes = entity_load('node', array_keys($entities['node']));
    krumo($nodes);
  }


After the loop stops executing, am I correct in thinking one instance of $nodeQuery will remain in memory for the rest of the request? Do I need to destroy this using unset() for performance?
You shouldn't really have to care about this much. Because PHP will clean up all this stuff at the end of the page's request lifetime. If you really want to cleanup this lingering instance of anything you just unset() it as-needed.

Something is fishy with your code as your EFQ is in a loop, but it's not being used in the loop for anything what-so-ever.