4.6 Transition Guide

To paraphrase Epic’s own statement, TSubObjectPtr was clunky and weird, and using regular pointers is so much cleaner and simpler!

As long as you use UPROPERTY() with your pointer, it will follow normal garbage collections rules.

I have a full wiki on UE4 Garbage Collection and UPROPERTY() :

Garbage Collection in UE4
https://wiki.unrealengine.com/Garbage_Collection_%26_Dynamic_Memory_Allocation