Samowyzwalający (zliczanie referencyjne) singelton

Rozważmy następujący scenariusz: Masz klasę singleton, która reprezentuje pewnego rodzaju dostawcę danych. Ta klasa singleton przydziela dużo pamięci i chcesz, aby zwolniła przydzieloną jej pamięć, gdy nikt go nie używa. Pływ:

Klasa A wywołanie getInstance i używa singleton (jest to pierwszy raz, gdy wywołanie getInstance i klasa singleton przydziela ogromną porcję pamięci)Klasa B wywołuje getInstance i używa singleton„Umiera” klasa A i klasa B (nikt nie używa teraz singletona)Program nadal działa, ale pamięć singletona nie jest zwalniana.

Jak zasugerować wdrożenie singletonu, który na etapie 3 (klasa A i B „umiera”) zwolni pamięć (wiem, że java używa zbierania śmieci, ale nadal pozwala powiedzieć, że chcę następującą pamięć = null).

PS Nie chcę wymuszać na każdej klasie, która używa singleton call release na singletonie, gdy przestaje go używać. Chcę, aby singleton sam obsługiwał pamięć „uwalniającą”.

questionAnswers(2)

yourAnswerToTheQuestion