我曾经用spring状态机开发过一个游戏,在高峰期,它会创建大约5000个状态机,每个状态机大约有25个状态。但是从性能测试中,我们注意到创建了很多对象,这会消耗内存并降低 gc 性能。对于我的选择,有一些对象是不可变的,比如 ObjectState,它可以被所有状态机重用。但它是为每个人创建的。
这是弹簧状态机的性能问题吗?还是我的误用?
10: 104192 10002432 org.springframework.statemachine.state.ObjectState
15: 208398 6668736 org.springframework.statemachine.support.OrderedCompositeItem
17: 397839 6365424 org.springframework.core.annotation.AnnotationAwareOrderComparator
18: 189440 6062080 org.springframework.statemachine.listener.OrderedComposite
26: 71040 4546560 org.springframework.statemachine.trigger.TimerTrigger
27: 89984 4319232 org.springframework.statemachine.transition.DefaultExternalTransition
30: 203648 3258368 org.springframework.statemachine.action.CompositeActionListener
42: 71040 1704960 org.springframework.statemachine.support.DefaultStateMachineExecutor$2
45: 104192 1667072 org.springframework.statemachine.support.AbstractStateMachine$4
46: 104192 1667072 org.springframework.statemachine.state.CompositeStateListener