Java 将类中的字段设置为同一类的新实例会导致内存溢出吗?InetValidator类(apache.commons)

Java 将类中的字段设置为同一类的新实例会导致内存溢出吗?InetValidator类(apache.commons),java,heap-memory,Java,Heap Memory,我在项目中使用apache.commons中的InetValidator类来验证IP地址。在浏览源代码时 public class InetAddressValidator implements Serializable { private static final int IPV4_MAX_OCTET_VALUE = 255; private static final int MAX_UNSIGNED_SHORT = 65535; private static fina

我在项目中使用apache.commons中的
InetValidator
类来验证IP地址。在浏览源代码时

public class InetAddressValidator implements Serializable {
    private static final int IPV4_MAX_OCTET_VALUE = 255;
    private static final int MAX_UNSIGNED_SHORT = 65535;
    private static final int BASE_16 = 16;
    private static final long serialVersionUID = -919201640201914789L;
    private static final String IPV4_REGEX = "^(\\d{1,3})\\.(\\d{1,3})\\.(\\d{1,3})\\.(\\d{1,3})$";
    private static final int IPV6_MAX_HEX_GROUPS = 8;
    private static final int IPV6_MAX_HEX_DIGITS_PER_GROUP = 4;
    private static final InetAddressValidator VALIDATOR = new InetAddressValidator();
    private final RegexValidator ipv4Validator = new RegexValidator("^(\\d{1,3})\\.(\\d{1,3})\\.(\\d{1,3})\\.(\\d{1,3})$");

    public InetAddressValidator() {
    }

    public static InetAddressValidator getInstance() {
        return VALIDATOR;
    }
我注意到有一个
验证程序
字段再次调用构造函数。
我所困惑的是,如果我创建这个类的一个新实例

InetAddressValidator addressValidator = new InetAddressValidator();
它是否会递归地创建同一类的新实例(因为字段
VALIDATOR
每次都创建一个新实例),最终我会耗尽堆空间

我还没有测试过这个,但想知道在测试时是否需要记住这一点

private static final InetAddressValidator VALIDATOR = new InetAddressValidator();
它是一个静态字段,因此在类加载时只实例化一次,而不是构造函数中的每个实例

它是一个静态字段,因此在类加载时只实例化一次,而不是构造函数中的每个实例。

InetAddressValidator addressValidator=新的InetAddressValidator();递归调用


InetAddressValidator addressValidator=新的InetAddressValidator();递归调用

啊,我的不好,不知道我怎么忽略了它。谢谢啊,我的坏,不知道我怎么会忽视它。谢谢在前三个声明中,您可以观察到程序员的明显情况:好像有人要更改最大八位字节值,或最大无符号
short
,或16。在前三个声明中,您可以观察到程序员的明显情况:好像有人要更改最大八位字节值,或最大无符号
,或16。