You may rework this method to be like following:
<pre><code>protected static function generateMetaData(CActiveRecord $model)
{
    $className=get_class($model);
    if(array_key_exist($className,self::$_instances))
        return self::$_instances[$className];
    else
    {
        $metaData=new CActiveRecordMetaData($model);
        self::$_instances[$className]=$metaData;
        return $metaData;
    }
}
This will ensure no extra objects will be created.
</code></pre>