in unreal4, is there any method like DontDestroyOnLoad in unity to keep the actor life when new level load?
No, all actors belong to a world and when the world is torn down everything is destroyed aside from a few core classes.
The way to get around this is to typically store the data you need in the Game Instance, then when the new level loads you create a new actor and put that data back onto it - if that makes sense.
Depending on what your game is like, you might be able use Level Streaming sublevels on a persistent map and have an actor ‘survive’ map changes that way. But yeah, the only data that survives map changes is that held inside the Game Instance.