What sort of problems? You lose the ability to do pointer arithmetic on native objects, since they can change address on any instruction boundary.
Then again we may not get into this problem until there's a full GC which would be quite rare.
If fork() performance is important to you, you probably don't want compaction for the tenured generation at all. That's totally fine; while fragmentation will accumulate over time, it's no worse than C++. You'll still have copying for the nursery, but the nursery fills up and gets recycled so often that the COW optimization isn't really helping you there anyhow.