Circular UObject references C++

Want to ask about circular references of UObjects to make sure I’m doing it right.

For example: I have 2 UObjects - UA and UB
In UA.h I have:
UPROPERTY()
class UB* b;

And in UB.h:
UPROPERTY()
class UA* a;

Also UA is an Actor and placed on level.
So it won’t be gc’ed (same for UB cuz UA has valid ref to it)

Is that object management valid? If I destroy UA would UB be destroyed also?(by gc)

Yes and no, it will be destroyed but during garbage collection every fixed period (so it will exist for specific time), if object won’t be referenced anywhere where engine can see (reflected variables with UPROPERTY() and smart pointers)