JVM为什么要在内存中重定位对象?

极客

现代JVM有时会在垃圾回收期间将对象重新定位在内存中,即使System.identityHashCode(object)在对象生命周期中的保持不变。我不明白的是,为什么JVM会重新定位内存中的对象?

幽灵守护者

如果内存碎片化(即删除了它们之间的零碎部分),则可以通过对其进行碎片整理来提高内存访问速度。而且,对它进行碎片整理可以为大型对象打开更大的内存空间。

为清楚起见进行编辑:如在该答案下方的注释中所述,垃圾回收算法通常会维护内存的“区域”。有些本来可以持续很长时间,有些则不是。该算法在不同的JVM上有所不同,但通常包括将对象从一个区域移动到另一个区域,以完全清空一个区域(如果已经几乎是空的)。然后可以将该区域作为一个整体使用。JVM非常聪明,可以发现哪些对象应该持久,哪些不是,但是有时它必须调整其策略并重新定位对象。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

为什么用send_data发送的对象似乎保留在内存中?

来自分类Dev

为什么R将循环变量/索引/虚拟对象存储在内存中?

来自分类Python

为什么元组在内存中的空间比列表少?

来自分类Dev

为什么堆栈和堆在内存中如此分离?

来自分类Dev

为什么UIViewController会保留在内存中

来自分类Dev

如果ResultSet取值并将其存储在内存中,为什么在关闭ResultSet对象后不能使用它?

来自分类Dev

为什么在此代码示例中,即使引用未引用对象,引用为什么在内存中也有大小?

来自分类Dev

为什么要在结构中保留内存?

来自分类Dev

对象如何存储在内存中?

来自分类Dev

为什么要在变量中存储Promise对象?

来自分类Dev

为什么这两个结构在内存中具有不同的大小?

来自分类Dev

在内存中创建Zip文件时,为什么必须解析MemoryStream才能正确创建Zip?

来自分类Dev

为什么用空的lambda函数注册事件会在内存中引起强烈引用?

来自分类Dev

为什么指针值不能成为在内存空间中引用对象的好标签?

来自分类Dev

带有嵌套对象的NSArray在内存中“丢失”对象

来自分类Dev

JVM内存中特定对象的子树的大小

来自分类Dev

为什么在内存位置写入访问冲突

来自分类Dev

是否存在需要在内存中将对象创建到特定地址的情况?

来自分类Dev

为什么要在小对象上同步?

来自分类Dev

为什么在批量插入过程中对碎片进行初始化和重定位

来自分类Dev

如果在同一翻译单元中调用函数,为什么需要重定位

来自分类Java

为什么需要在Java中向HTTP请求返回Response对象而不是String对象?

来自分类Dev

为什么要在lambda中捕获该对象以及该对象的共享指针?

来自分类Dev

为什么Play Framework 2.5不尊重sbt中的JVM内存设置?

来自分类Java

为什么JVM无法“看到”?字符串池内存中的字符串值重复?

来自分类Dev

为什么java中的HashMap在内部使用数组来存储条目对象而不是ArrayList?

来自分类Dev

为什么需要在c / c ++中分配内存?

来自分类Dev

为什么要在运行malloc代码之前分配内存?

来自分类Java

内部类对象如何驻留在内存中?

Related 相关文章

  1. 1

    为什么用send_data发送的对象似乎保留在内存中?

  2. 2

    为什么R将循环变量/索引/虚拟对象存储在内存中?

  3. 3

    为什么元组在内存中的空间比列表少?

  4. 4

    为什么堆栈和堆在内存中如此分离?

  5. 5

    为什么UIViewController会保留在内存中

  6. 6

    如果ResultSet取值并将其存储在内存中,为什么在关闭ResultSet对象后不能使用它?

  7. 7

    为什么在此代码示例中,即使引用未引用对象,引用为什么在内存中也有大小?

  8. 8

    为什么要在结构中保留内存?

  9. 9

    对象如何存储在内存中?

  10. 10

    为什么要在变量中存储Promise对象?

  11. 11

    为什么这两个结构在内存中具有不同的大小?

  12. 12

    在内存中创建Zip文件时,为什么必须解析MemoryStream才能正确创建Zip?

  13. 13

    为什么用空的lambda函数注册事件会在内存中引起强烈引用?

  14. 14

    为什么指针值不能成为在内存空间中引用对象的好标签?

  15. 15

    带有嵌套对象的NSArray在内存中“丢失”对象

  16. 16

    JVM内存中特定对象的子树的大小

  17. 17

    为什么在内存位置写入访问冲突

  18. 18

    是否存在需要在内存中将对象创建到特定地址的情况?

  19. 19

    为什么要在小对象上同步?

  20. 20

    为什么在批量插入过程中对碎片进行初始化和重定位

  21. 21

    如果在同一翻译单元中调用函数,为什么需要重定位

  22. 22

    为什么需要在Java中向HTTP请求返回Response对象而不是String对象?

  23. 23

    为什么要在lambda中捕获该对象以及该对象的共享指针?

  24. 24

    为什么Play Framework 2.5不尊重sbt中的JVM内存设置?

  25. 25

    为什么JVM无法“看到”?字符串池内存中的字符串值重复?

  26. 26

    为什么java中的HashMap在内部使用数组来存储条目对象而不是ArrayList?

  27. 27

    为什么需要在c / c ++中分配内存?

  28. 28

    为什么要在运行malloc代码之前分配内存?

  29. 29

    内部类对象如何驻留在内存中?

热门标签

归档