在Java中使用System.getenv()的性能影响

Lui*_*uiz 1 java amazon-web-services

我有一个使用jersey构建的Java REST Web服务,出于安全原因,我想在OS环境变量中保存方法的参数:DriverManager.getConnection();。网址,用户名和密码。

由于每个请求都需要创建自己的连接,因此我想知道是否有如此多的调用System.getenv("key");是性能问题?

这样做的想法来自本文:http : //docs.aws.amazon.com/elasticbeanstalk/latest/dg/java-rds.html#java-rds-javase

拥有这样的东西将是一个更好的选择:

public class EnvironmentHelper {
    static final String URL;
    static final String USERNAME;
    static final String PASSWORD;

    static {
        URL = System.getenv("URL");
        USERNAME = System.getenv("USERNAME");
        PASSWORD = System.getenv("PASSWORD");
    }
}
Run Code Online (Sandbox Code Playgroud)

这样,我只加载一次变量,对吗?无论我收到多少请求。

Sha*_*dra 5

System.getEnv(name)ProcessEnvironment.getEnv实际上是对HashMap的查找的Transaltes (ProcessEnvironment是HashMap的扩展)。此HashMap加载在基于类初始化运行的静态块中-因此,这看起来非常快,因为查找的可能性很大,为O(1)。