繁体   English   中英

Java枚举,每个常量如何以及何时分配内存

Java enum, how and when memory allocated per constant

提示:本站收集StackOverFlow近2千万问答,支持中英文搜索,鼠标放在语句上弹窗显示对应的参考中文或英文, 本站还提供   中文繁体   英文版本   中英对照 版本,有任何建议请联系yoyou2525@163.com。

我有简单的枚举类,如下所示。 我想知道如何为每个常量分配内存(为每个常量创建成员类对象)以及它的范围是什么。

public enum Member {
    HAPPY("HAPPY"),RAhul("RAhul"),ANSAL("ANSAL");
    private String argument;

    Member(String arguments)
    {
        System.out.println("Enum Constructor work");
        this.argument = arguments;

    }
    public String getValue() {
        return argument;
    }

}
2 个回复

成员HAPPY("HAPPY"),RAhul("RAhul"),ANSAL("ANSAL"); 在加载枚举类时创建(即它们的作用域是静态的)。 枚举被编译为扩展java.lang.Enum普通类,并且其实例像其他类对象一样在堆中分配。

每个成员调用在枚举中定义的构造函数,该构造函数接受字符串参数。

这来自Java语言规范相关部分

枚举常量后面可以跟参数,当在类初始化期间创建常量时,这些参数将传递给枚举类型的构造函数,如本节后面所述。 使用正常的重载规则(第15.12.2节)选择要调用的构造函数。 如果省略参数,则假定为空参数列表。

出于所有实际目的,java将枚举视为一个只能具有固定数量的对象(对应于定义的每个枚举常量的对象)的类。 所以enum在加载,初始化等方面几乎就像一个类。

2 何时为java中的静态变量分配内存?

类的所有对象共享静态变量。 但是什么时候为静态变量分配内存? 是为类创建第一个对象的时候? 或者甚至在创建类的任何实例之前发生了什么? 实例变量也是在运行时分配的内存。 静态变量的内存是在运行时还是编译时分配的? ...

3 增加每个节点分配的内存时,Hadoop安装程序不起作用

我将以下属性添加到yarn-site.xml中,以为每个节点分配24 GB内存。 我还将以下内容添加到mapred-site.xml 现在,我的节点确实显示了每个分配的24 GB内存,但是当我运行任务时,大量的reduce任务会在映射器完成之前开始,并且所有任务都会失败。 其中 ...

4 跟踪每个函数分配多少内存

有没有可以让我追踪每个功能分配多少内存的工具? 例如,在整个程序运行时,无论何时调用我的add_node函数, malloc调用分配的所有内存都与queue_buffer中的queue_buffer等相对。 我想分析一下使用大量内存的位置。 ...

2014-02-10 04:37:19 1 71   c
5 如何限制CentOS 6中Java分配的内存?

我有一个使用10个线程的Java应用程序。 每个线程都使用Java Matlabcontrol库打开一个Matlab会话。 我在运行CentOS 6的群集上运行该应用程序。 整个应用程序使用的物理内存(最大内存)约为5GB(按预期),但保留的物理内存(最大交换)约为80GB,这太高了。 ...

6 java中如何为堆栈和队列分配内存

我们知道 ArrayList 使用动态数组来存储数据。 LinkedList 使用链表来存储数据。 因此,对于这两种情况,我们知道添加或删除新元素时它是如何工作的(内存方面)。 现在类似地,在 java 中如何为堆栈或队列分配内存。 在内存级别,当我在堆栈或队列中添加/删除元素时会发生什么。 ...

9 如何为Java中的类成员函数分配内存

我发现了与我类似的问题: “类成员函数代码存储器是一次分配对象还是在对象的每个实例中分配?”,可以在这里找到 但是那里的答案仅涉及C / C ++的情况。 如果我使用Java,有人可以告诉我这个问题的答案吗? ...

10 如何在java中直接使用枚举常量

我想枚举颜色并使用Color实例。 因此我创建了一个带有私有字段和get函数的枚举,但由于需要调用getColor() ,因此使用它很麻烦。 有没有更好的方法直接使用枚举常量而不调用getColor() ? 使用枚举作为地图问题的关键的答案建议使用地图,该地图也需要调用get() ...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2022 STACKOOM.COM