是否需要堆来存储常量(Java对象)?多少?

问题描述 投票:0回答:1

所以在我的程序中,我进行了很多检查,例如:

return Optional.ofNullable(issuer)
    .orElseThrow(() -> new OAuth2AuthenticationException
        new OAuth2Error(code, description, null));

所以我开始考虑创建一个包含大约6个字段的常量类,例如:

public static final OAuth2AuthenticationException ISSUER_IS_NOT_TRUSTED_EXCEPTION =
    new OAuth2AuthenticationException(new OAuth2Error(
        INVALID_ISSUER, "Issuer is not trusted", null));

现在我有类似的东西:

return Optional.ofNullable(issuer)
    .orElseThrow(() -> ISSUER_IS_NOT_TRUSTED_EXCEPTION);

我的问题是:这场比赛值得吗? Coz在每次创建这些对象的情况下可能会在一段时间内占用更多内存(如果有很多并发用户试图在Momemt中非法访问资源),但是所有这些对象都会被GC破坏。

要存储6个异常需要多少堆内存,我应该这样做吗?

java constants heap-memory
1个回答
-1
投票

很多检查

很多检查是什么意思?如果每秒发生数百或数千次,您将需要使用一个常数。当您改用常量时,不需要每次都创建一个对象。如果只执行几次,则可以采用其他方法。

一个很好的经验法则是,如果它被使用了10次以上(给出或获取),那么就将其设为字段以避免产生额外的对象。

© www.soinside.com 2019 - 2024. All rights reserved.