代码之家  ›  专栏  ›  技术社区  ›  Ravisha

是否可以强制将对象存储在堆中?

  •  3
  • Ravisha  · 技术社区  · 15 年前

    这只是为了我的理解。属于类成员的对象进入堆,而局部变量和值类型进入堆。是否有用例和可能强制将对象推到堆或堆?

    4 回复  |  直到 15 年前
        1
  •  2
  •   user207421    15 年前

    属于类成员的对象转到 成堆。

    不,对象进入堆。

    …而局部变量和值 类型[转到]堆栈。

    不。所有局部变量都分配在堆栈上。如果它们是对对象的引用,则相关对象如果存在,则在堆中。

    是否有一个用例并且有可能 将对象推送到堆栈或堆 强制地?

    不,你不需要。所有对象都在堆上分配。

        2
  •  5
  •   kgiannakakis    15 年前

    不,Java不允许直接访问内存。我不认为有这个用例。即使在C++中,某些规则也适用于保存对象的地方,这是不可能的。您将需要实现自己的内存管理例程来实现这一点,这将是繁琐的和依赖于平台的。

        3
  •  2
  •   Chii    15 年前

    是和否-我认为这里有一个概念上的误解。

    如果通过强制堆上的对象,您的意思是希望它在调用创建它的方法之后仍然“活动”,那么是的。你只需要保留一个对它的引用。

    如果通过强制堆上的对象,您的意思是要指定从何处分配该对象的内存,那么不是(没有一些JNI时髦的东西)。

        4
  •  2
  •   Lauri    15 年前

    在Java中,所有分配给新的,都是从堆中分配的。从堆栈中分配基元类型的局部变量。