当函数被解除时,构造函数将在创建该类的对象时占用内存。不是名为

时间:2016-06-10 17:06:05

标签: java

我正在创建一个GUI程序,其中有几个菜单。通过单击菜单项,将打开一个新框架并执行某项任务,然后将其关闭但不关闭主框架。        出于这个原因,我创建了一个单独的类form.java。 在这个类中,我创建了十个函数,其中每个函数包含一个框架。 我在我的主类的构造函数中创建了这个类的对象,在我的主框架中。单击一个菜单项时调用该函数。

问题:在调用该函数之前,只有在我的主类中创建了form.java类的对象时,是否所有函数都使用了内存? 单击菜单项时将调用此函数。我想当时它需要占用内存空间,而不是在调用之前......

2 个答案:

答案 0 :(得分:0)

只有在单击菜单项时调用该函数时才会创建子框架。当创建自定义类的对象(即form.java)时,不会为子帧分配内存。这是因为子框架对象是声明inform.java的函数/方法的本地对象。只有在构造form.java时,才会为form.Java的成员变量分配内存,而不是为其局部变量。您可以使用JDK附带的VisualVM配置工具确认这一点。

答案 1 :(得分:0)

答案:没有其他会员的记忆消耗,如方法/功能。 的说明:

  

重要提示:函数本身永远不会占用整个内存块,即使它被调用。

那它实际上是如何运作的?

要理解这一点,您应该对系统编程和编译器构建有一些了解。

  

Active Records 的概念。 Active Records只不过是内存映射细节,包括静态和动态内存。

     

在JVM中,当一个对象被创建时,它在STACK和HEAP中占用一个内存。   现在,如果堆栈中有任何可能的路径来访问位置,那么这实际上应该是消耗内存。

     

现在,如果调用/创建了一个类的对象,它只占用引用变量的内存(即 new 之前),并且它的实例变量也占用了内存,并且没有其他会员的记忆消耗,如方法/功能。