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?
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?
32-bit
JVM 确实使用32
位作为引用,但64-bit
JVM 可以使用64-bits
作为引用。
在您用完 JVM 上的 2 32引用数量限制之前32-bit
,您将获得一个(无论可用 RAM 是多少,JVM上的堆OutOfMemoryError
都不能多)。2GB
32-bit
在 a 上64-bit JVM
,您可以创建超过 2 32 个对象,假设您有足够的内存来存储它们。
请注意,出于性能目的,某些 64 位 JVM 可能会使用 32 位指针(热点上的 CompressedOops 标志)。
你可以使用x64
JVM。它使用8
字节。
但是,如果您有 2 32 个4GB
对象,则每个对象至少为 40 个字节......无论如何它都不适合内存。