Когда вы возвращаете значение из объекта, оно не возвращается как ссылка.Попробуйте это:
TestComponent.cfc
<cfcomponent name="details">
<cffunction name="getDetails" access="public" returntype="struct">
<cfscript>
var mydetails = {};
mydetails.fName='lilly';
mydetails.lName ='flower';
mydetails.timestamp = GetTickCount();
</cfscript>
<cfreturn mydetails />
</cffunction>
</cfcomponent>
Test.cfm
<cfset myObject = CreateObject("component", "TestComponent") />
<cfset myDetails = myObject.getDetails() />
<cfdump var="#myDetails#" label="First Request" />
<cfset otherDetails = myObject.getDetails() />
<cfdump var="#myDetails#" label="After second request" />
<cfdump var="#otherDetails#" label="otherDetails from second request" />
Вы заметите, что первый и второй дампы для myDetails одинаковы, чтоозначает, что второй запрос, в котором переменная установлена на «otherDetails», не изменяет исходное значение в «myDetails».Это означает, что структура была возвращена и присвоена переменной byValue вместо byReference.
С учетом сказанного исходная локальная переменная в компоненте должна собирать мусор одновременно с самим экземпляром компонента.в то время как структура, сидящая в сеансе, не будет собирать мусор, пока сеанс не сделает это.