我需要一个组件/类来限制某些方法的执行到N秒内的最大M次调用(或ms或nanos,无关紧要).
换句话说,我需要确保我的方法在N秒的滑动窗口中执行不超过M次.
如果您不知道现有的课程,请随时发布您的解决方案/想法如何实现这一点.
我想使用BigDecimal来表示低延迟交易应用程序中的任意精度数字,如价格和金额,每秒有数千个订单和执行报告.
我不会对它们进行很多数学运算,所以问题不在于BigDecimal本身的性能,而在于大量BigDecimal对象会如何影响应用程序的性能.
我担心的是,大量短命的BigDecimal对象会给GC带来压力并导致CMS收集器中更大的Stop-The-World暂停 - 这绝对是我想要避免的.
您能否确认我的疑虑并建议使用BigD的替代方案?此外,如果您认为我的担忧是错误的 - 请解释原因.
更新:
感谢所有回答的人.我现在确信使用BigDecimal会损害我的应用程序的延迟(即使我仍然计划测量它).
目前我们决定坚持使用"非常非OOP"解决方案(但没有精确命中) - 使用两个int
s,一个用于尾数,另一个用于指数.这背后的基本原理是基元放在堆栈上,而不是堆,因此不受垃圾收集的影响.