TComponent не реализует свои методы _AddRef и _Release так же, как TInterfacedObject. Он откладывает подсчет ссылок до своего свойства VCLComObject , которое должно быть некоторым другим интерфейсным объектом. Поскольку TComponent не считает ссылки, он не может определить, когда его счетчик достигает нуля, поэтому он не освобождает себя.
Свойство VCLComObject содержит ссылку на интерфейс, которая должна реализовывать IVCLComObject . Если связанному с компонентом объекту VCLComObject сказано, что он владеет компонентом, то, когда счетчик ссылок этого интерфейса достигнет нуля, он уничтожит связанный с ним компонент. Говорят, что он владеет компонентом, вызывая его метод FreeOnRelease.
Все это разработано, чтобы упростить упаковку компонентов VCL в COM-объекты. Если это не ваша цель, то вы, вероятно, столкнетесь с некоторыми другими неожиданными аспектами проектирования на этом пути, так что вы можете пересмотреть мотивацию для того, чтобы ваши компоненты в первую очередь реализовывали интерфейсы.