51工具盒子

依楼听风雨
笑看云卷云舒,淡观潮起潮落

-Djava.security.egd=file:/dev/./urandom

-Djava.security.egd=file:/dev/./urandom

背景

在java开发中广泛使用SecureRandom,产生可靠随机数。但在大量产生随机数的场景下,性能会较低。

引起原因

SecureRandom产生下一个随机数的时候调用nextLong或者nextBytes,最终会调用SecureRandom的nextBytes。而nextBytes是一个同步的方法,在多线程使用时,可能会产生性能瓶颈。

解决方法

使用 -Djava.security.egd=file:/dev/./urandom 加快随机数产生

解决原理

**/dev/random在产生大量随机数的时候比/dev/urandom慢,**所以,建议在大量使用随机数的时候,将随机数发生器指定为/dev/./urandom。

hotspot需要使用配置项-Djava.security.egd=file:/dev/./urandom才能从urandom读取数据,如果是openjdk已经做了优化,直接从urandom读取数据。

赞(4)
未经允许不得转载:工具盒子 » -Djava.security.egd=file:/dev/./urandom