0

I found that jvm use 4 byte to save a reference point to a object in 64-bit env.

I do not understand that how to deal with when application has more than 2^32 objects?

who can describe this case?

4

2 回答 2

5

32-bitJVM 确实使用32位作为引用,但64-bitJVM 可以使用64-bits作为引用。

在您用完 JVM 上的 2 32引用数量限制之前32-bit,您将获得一个(无论可用 RAM 是多少,JVM上的堆OutOfMemoryError都不能多)。2GB32-bit

在 a 上64-bit JVM,您可以创建超过 2 32 个对象,假设您有足够的内存来存储它们。

请注意,出于性能目的,某些 64 位 JVM 可能会使用 32 位指针(热点上的 CompressedOops 标志)。

于 2013-08-04T12:00:51.453 回答
2

你可以使用x64JVM。它使用8字节。

但是,如果您有 2 32 个4GB对象,则每个对象至少为 40 个字节......无论如何它都不适合内存。

于 2013-08-04T11:59:29.363 回答