是否可以从 gc 角度将 java 对象标记为不可收集以节省 gc 扫描时间?

2023-11-22

是否可以从 gc 角度将 java 对象标记为不可收集以节省 gc 扫描时间?

类似的东西http://wwwasd.web.cern.ch/wwwasd/lhc++/Objectivity/V5.2/Java/guide/jgdStorage.fm.html特别是非垃圾收集容器那里(不可垃圾收集?)。

问题是我有很多普通的临时对象,但我有更大的(几个 Gigs)对象是为了缓存而存储的。 Java GC 没有理由遍历所有这些 Cache GB 来尝试查找任何要收集的内容,因为它们包含有自己的超时的缓存数据。

这样我就可以以自定义方式将数据划分为无限生命周期和正常生命周期的对象,并且希望 GC 会非常快,因为普通对象的生命周期不会那么长,并且数量较少。

有一些解决此问题的方法,例如Apache 直接内存和商业 Terracotta BigMemory(http://terracotta.org/products/bigmemory),但 java 原生解决方案会更好(我的意思是免费并且可能更可靠?)。另外我想避免序列化开销,这意味着它应该发生在同一个 jvm 中。据我了解主要是DirectMemory和BigMemory的操作off heap这意味着对象必须在 jvm 外部的内存中序列化/反序列化。简单地标记 jvm 内的非 gc 区域似乎是更好的解决方案。使用文件进行缓存也不是一种选择,它具有同样难以承受的序列化/反序列化开销 - 用例是一个 HA 服务器,其中大量数据以随机(人类)顺序使用,并且需要低延迟。


JVM 管理的任何内存也会被 JVM 进行垃圾收集。任何无需反序列化即可直接供 Java 方法使用的“活动”对象都必须位于 JVM 内存中。因此,根据我的理解,你不可能拥有不受垃圾收集影响的活动对象。

另一方面,您描述的用法应该使垃圾收集的分代方法非常有效。如果您的大对象停留一段时间,那么对它们进行回收检查的频率就会降低。因此,我怀疑避免这些检查是否能带来很多好处。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

是否可以从 gc 角度将 java 对象标记为不可收集以节省 gc 扫描时间? 的相关文章

随机推荐

  • 在having 子句中使用MIN 函数

    我想获取最低工资的员工姓名 有没有一种方法可以仅使用一个查询来完成此操作 我在下面给出了我的查询 它不起作用 因为having子句需要一个条件 有没有什么方法可以在having子句中给出一个条件来检索最低工资的员工姓名 SELECT fir
  • 监听 MongoDB 驱动程序中的重新连接事件

    我想向 MongoDB 连接添加事件侦听器 以便在连接断开 每次重新连接尝试以及成功重新连接尝试时运行某些内容 我阅读了所有官方文档和API 但找不到解决方案 目前 我有这个 但只有超时事件有效 如果我们尚未初始化 MongoClient
  • 警告:preg_replace() [function.preg-replace]:编译失败:在偏移量 1 处没有可重复的内容

    有人可以帮助调试这个错误吗 警告 preg replace function preg replace 编译失败 在偏移量 1 处没有可重复的内容 Generate uid function gen uid len 40 hex md5 w
  • GHC 包被隐藏

    我正在尝试运行这个简单的例子 我从哈斯克尔维基 import GHC import GHC Paths libdir import DynFlags main defaultErrorHandler defaultFatalMessager
  • 这个四元数旋转代码是如何工作的?

    我试图了解四元数旋转是如何工作的 我找到了这个迷你教程http www julapy com blog 2008 12 22 quaternion rotation 但他做出了一些我无法锻炼的假设 比如我该怎么做 只需绕轴旋转矢量即可计算出
  • VB.NET 换行拆分(C# 转换)

    我正在尝试将此代码从 C 转换为 VB NET string lines theText Split new string r n n StringSplitOptions None 这就是我所拥有的 问题是它在消息框中打印整个文本框内容
  • Asp.Net Core:调试-附加到进程不起作用

    我们用来调试 Net Framework 中正在运行的 IISExpress 进程的方法是在 Visual Studio 中附加一个名为 iisexpress exe 的进程 但附加iisexpress进程在 Net core中不起作用 它
  • linq 中的动态属性名称

    我正在尝试编写一个采用动态属性名称的 linq 查询 例如 如果属性名称是 test 则简单的查询将如下所示 var test testList Select x gt x test Distinct ToList 但我想动态生成属性名称
  • JavaFX 中的画笔描边

    我正在尝试用 JavaFX 编写一个绘画应用程序 我想要一个类似于真正画笔的画笔 但我不知道如何启动算法 下面的代码显示了我当前的画笔描边 虽然它是一个有用的描边 但它并不是真正的画笔 import javafx application A
  • 第二个 form.submit() 在 XP 上的 Safari 中不起作用,在其他浏览器上起作用

    我有一些代码 当您单击我的页面上的某些内容时 使用 form submit 打开另一个窗口 它在 IE 6 8 Firefox 和 Chrome 以及 Mac 上的 Safari 中运行良好 但在 Windows XP 上的 Safari
  • jquery 插件太多?

    我正在开发一个网站 但我意识到 除了主 javascript 文件的链接和 jquery 文件的链接之外 它开始看起来像是还有三个或更多插件的链接 我只是想知道这是否是好的做法 我正在构建的网站是一个网络应用程序 因此我需要很多功能 但我不
  • python 多久刷新一次文件?

    Python 多久刷新一次文件 Python 多久刷新一次到标准输出 我不确定 1 至于 2 我相信Python在每一个新行之后都会刷新到stdout 但是 如果您将标准输出重载到文件中 它会经常刷新吗 对于文件操作 Python 使用操作
  • 排序算法是否应该在比较函数中传递相同的元素

    libcxx 的 std sort c 标准的 llvm 版本 库 调用具有相同元素的比较谓词 即 比较函子的两个参数都引用相同的位置 要排序的序列 一个简化的例子来说明这一点 cat a cc include
  • 迁移到 mysql 5.7 后查询非常慢

    我有一个 MySQL 数据库 其中包含 InnoDB 表 总计超过 10 GB 的数据 我想将其从 MySQL 5 5 迁移到 MySQL 5 7 我有一个查询 看起来有点像 SELECT dates date count mySub2 m
  • 如何检测android中是否存在麦克风?

    我的应用程序中有一个语音识别部分来捕获用户的语音输入 这就是我所做的 Intent voiceIntent new Intent RecognizerIntent ACTION RECOGNIZE SPEECH startActivityF
  • 查找存储依赖项的 Maven 存储库

    我正在开发一个包含多个公司远程 Maven 存储库的项目 每个存储库托管数十个依赖项 整个项目使用数百个依赖项 我需要一种方法快速确定依赖项存储在哪个远程存储库上 Maven 是否提供了一种简单的方法来执行此操作 还是我需要自己搜索每个存储
  • 单击栏或按钮外部时隐藏菜单侧边栏

    我正在尝试制作一个像语义 UI 一样的菜单 但我只实现了单击菜单按钮并打开菜单 反之亦然 我使用切换类来显示侧边栏 但我不知道这种方式是否完全正确 div class menu button div menu button click fu
  • 表单中 type="submit" 的纸张按钮未提交?

    我正在尝试使用paper button with type属性设置为submit 就像人们所做的那样button元素 提交封闭的form 但由于某种原因无法提交表格 这是错误还是功能 怎么做paper button提交表格 PS 我在 da
  • 浏览器关闭后删除身份验证/会话 cookie

    浏览器关闭后 cookie 继续存在需要哪些具体步骤 目前我有 createPersistentCookie set to true on LoggedIn event 指定机器密钥 表单滑动过期设置为true 只要浏览器打开 用户就会保持
  • 是否可以从 gc 角度将 java 对象标记为不可收集以节省 gc 扫描时间?

    是否可以从 gc 角度将 java 对象标记为不可收集以节省 gc 扫描时间 类似的东西http wwwasd web cern ch wwwasd lhc Objectivity V5 2 Java guide jgdStorage fm