[Glass] orphaned classes do not disappear
Johan Brichau via Glass
glass at lists.gemtalksystems.com
Wed Mar 8 04:05:58 PST 2017
Also:
I already executed the following expressions I picked up from earlier discussions and that fix some memory leaks:
GsDeployer cleanClassHistory.
MCDefinition clearInstances.
MCMethodDefinition resetCachedDefinitions.
UndefinedSymbols removeAll.
MethodVersionHistory reset.
"MetacelloConfigurationResource reset."
UserGlobals removeKey: #GsDeployerBar_Instances ifAbsent: [].
SystemOrganizer resetSystemOrganization.
UndefinedSymbolsTest new cleanUndefinedSymbols.
System myUserProfile symbolList do: [:symbolDictionary |
symbolDictionary valuesDo: [:global |
global isBehavior ifTrue: [ | desc |
(desc := global instVarNamed: 'description' ) notNil
ifTrue: [
desc itsClass ~~ global
ifTrue: [ global description itsClass: global ]]]]].
> On 8 Mar 2017, at 13:01, Johan Brichau <johan at yesplan.be> wrote:
>
> Hi there,
>
> I am working on preparing a GS 2.4.4.1 extent for upgrade to GS 3.2
> For that, I am cleaning the repo such that no orphaned class instances still exist.
>
> I hit an issue because I find orphaned classes that are not GC’ed for which no instances still exist.
> When I ask the reference path to the class object, it tells me it is being referenced by its metaclass.
> However, when I ask for the reference path to the metaclass object, I get a ‘false’ response.
>
> Is there anything I can do to make sure these instances (of MetaClass) are removed (or otherwise find out why they are not GC’ed) ?
>
> thanks
> Johan
>
> For reference, this is the script to find orphaned classes:
> | classes orphans |
> classes := IdentitySet new.
> System myUserProfile symbolList do: [:symbolDictionary |
> symbolDictionary valuesDo: [:global |
> global isBehavior ifTrue: [ classes add: global ]]].
> System commitTransaction.
> orphans := (Metaclass allInstances collect: [:mClass | mClass theNonMetaClass ])
> select: [:class | (classes includes: class) not ].
More information about the Glass
mailing list