红帽白皮书新鲜出炉!点击获取,让你的云战略更胜一筹! 了解详情
写点什么

Terracotta 的 BigMemory 力图消除针对 Java 缓存的垃圾回收

  • 2010-09-27
  • 本文字数:1416 字

    阅读完需:约 5 分钟

Terracotta 在解决 Java 应用的垃圾回收引起的暂停问题方面做出了最新的尝试。GC 暂停问题在严重依赖缓存的应用中表现的比较突出。许多垃圾回收器将新、旧对象分代隔离,并发处理较年轻的对象,但是在处理老对象时却不得不采取全局暂停操作(stop-the-world)。通过将长期存在的对象放入内存,缓存在处理这些对象时会激化全局暂停的问题。Terracotta 的解决方案名为 BigMemory™ for Enterprise Ehcache,特意采用了独有的内存管理系统。

“如今,开发人员使用消耗时间的技术来处理大数据集合——例如,使用大量的 VM(分配小堆)”,Terracotta 的 CTO Ari Zilka 说:

BigMemory for Enterprise Ehcache 使 GC 调优的神秘色彩一去不复返。企业可以充分利用现代服务器的能力实现因内存数据带来的性能提高,同时把数据中心的服务器合并。

BigMemory 被视为 Azul 的 Zing 的竞争者,Zing 为基于 Intel 和 AMD 的服务器提供无暂停的垃圾回收。但是,这两种产品采取了不同的方法。Azul 的解决方案使用软件技术提供了一种垃圾回收算法,能够与应用并发运行,因此,需要 Azul 的 Java 虚拟机。BigMemory 则是通过管理在堆外存放在缓存中的数据来减少垃圾回收的压力,类似于采用 C 语言编写的应用。因此,目前没有使用缓存代码的应用需要改变代码,但是对于已经使用缓存(如 Hibernate Cache)的应用来说,JVM 不需要变化。

InfoQ 采访了 Terracotta 的首席执行官 Amit Pandey。Pandey 表示,虽然 Terracotta 的 Ehcache 支持单节点和多节点,但是 Terracotta 的用户中 80-85% 都在使用单节点缓存。这些用户可能还没有准备好采用完全分布式的架构,但是他们在扩展性和性能方面存在一些问题。对于这些客户,BigMemory 提供了一种办法:

“当他们尝试扩展已经放入内存或者堆里的数据集大小时,就会遇到垃圾回收问题和性能问题。因此,他们只能发挥很小的潜力。”

Pandey 告诉我们,最初 Terracotta 是解决自己的 Java 服务器的垃圾回收问题,今年早些时候才决定开发自己的内存管理器,采用 Java 编写。做完之后,他们决定将其集成到 Ehcache 产品中并投放市场。Pandey 表示,大部分客户在堆达到 4GB 左右的时候就会面临困境。

在 Java 世界,我们的产品提供了将大量数据放入 Encache 的能力。我们已经测试了超过 100GB 数据,性能表现平稳,包括响应时间、SLA、最大垃圾回收暂停时间,这是因为我们基本上不做 GC 暂停。因此,如果你的应用在 1GB 的堆里 GC 时间为 1 秒,那么引入 Ehcache,将数据脱离堆,仍然在内存中,你可以达到 100GB 而且 GC 时间几乎保持不变。

下图(感谢 Terracotta 提供)是针对真实应用抽象和模块化得出的数据。

我们还谈到了内存管理器的工作原理,Pandey 说:

… 我们没有做垃圾回收。我们的内存管理方式和其他语言非常类似。现在,我们把数据都存放在线性数据结构中。因此,不会存在分代问题等等,我们的应用负责处理这些问题。你在堆上有些数据并按照正常的方式处理,但是你也可以把堆设的很小,然后把所有其他数据都放到我们的数据结构中,我们来处理。我们引入了一些非常精妙的算法,能够处理碎片等,因为我们是在离线模式下操作,所以不会降低应用运行速度。

虽然 BigMemory 的目标市场是那些不想构建完全分布式架构的人,但是该产品在分布式缓存中同样有效。

该产品目前处在 beta 阶段,预计十月份发布 GA 版。具体价格将在这之前公布。

查看英文原文: Terracotta’s BigMemory Aiming to Eliminate Garbage Collection for Java Caches

2010-09-27 04:242827
用户头像

发布了 501 篇内容, 共 247.2 次阅读, 收获喜欢 57 次。

关注

评论

发布
暂无评论
发现更多内容

IPFS挖矿系统开发详情案例

系统开发咨询1357O98O718

IPFS云算力挖矿系统开发 IPFS算力挖矿软件系统开发

通达同城快递设计方案

garlic

架构师训练营第 1 期

技术干货 | 六分钟学会使用 HBuilder 引入构建 mPaaS 小程序

蚂蚁集团移动开发平台 mPaaS

小程序 uni-app mPaaS

开设赌场的CTO | 法庭上的CTO(23)

赵新龙

CTO 法庭上的CTO

母鸡下蛋实例:多线程通信生产者和消费者wait/notify和condition/await/signal条件队列

叫练

多线程与高并发 Wait lock 线程互斥 await

Spring cloud Gateway(二) 一个Http请求的流程解析

Java 网关

CKLC挖矿矿机系统开发案例介绍

系统开发咨询1357O98O718

CKLC挖矿矿机系统软件开发 CKLC挖矿矿机系统开发 CKLC挖矿矿机APP系统开发

5G与4G的差别及应用

anyRTC开发者

人工智能 android AI 5G WebRTC

阿里面试:Mybatis中方法和SQL是怎么关联起来的呢?

田维常

mybatis

测开之函数进阶· 第6篇《闭包》

清菡软件测试

测试开发

NoahTenet诺亚信条软件系统APP开发

系统开发

分享一个普通程序员的“沪漂”六年的历程以及感想

程序员老猫

回忆录 经历 年终总结 沪漂 上海买房

送你一份迷你书,全面了解如何做好大促技术备战

京东科技开发者

DevOps

鸟枪换炮,利用python3对球员做大数据降维(因子分析得分),为C罗找到合格僚机

刘悦的技术博客

Python 数据分析 特征选择 降维

盘点2020 | YourBatman 2020年感悟关键词:科比、裁员、管理层、活着

YourBatman

裁员 盘点2020 科比 管理层 活着

IPFS挖矿矿机系统开发方案丨IPFS挖矿矿机源码案例

系统开发咨询1357O98O718

IPFS云算力挖矿系统开发 IPFS算力挖矿系统开发搭建

SpringCloudGateway(一) 概览

Java SpringcloudGateway

为了搞清楚类加载,竟然手撸JVM!

小傅哥

JVM 小傅哥 类加载 生命周期 加载机制

散布消极言论被开除的总监 | 法庭上的CTO(25)

赵新龙

CTO 法庭上的CTO

IPFS云算力挖矿系统开发详解案例及源码

系统开发咨询1357O98O718

云算力挖矿系统开发详解 云算力APP系统软件开发 云算力模式系统开发源码 云算力软件系统开发定制

公安警务报警系统,二维码一键定位报警

t13823115967

二维码定位报警系统开发 微警务 二维码定位

智慧社区综合应用平台搭建,社区管理解决方案

t13823115967

智慧社区管理平台开发 智慧平安社区平台建设

MySQL为Null会导致5个问题,个个致命!

王磊

MySQL MySQL使用

IPFS分布式存储矿机系统APP软件开发

系统开发

10次面试,2份offer —— 大龄程序员 2020 求职记录

escray

面试 架构师训练营第 1 期

爆赞!P8架构师总结29篇多线程与高并发+设计模式核心笔记

Java架构追梦

Java 学习 架构 面试 多线程高并发

AAAI 2021论文:利用深度元学习对城市销量进行预测(附论文下载)

京东科技开发者

数据库 大数据 时序预测

总结2020:5个月出版两本书,日更公众号是一种怎样的体验?

冰河

程序员 程序人生 年终总结

架构师训练营第一周作业

Mark

Java多线程编程核心技术

田维常

多线程

被砍伤的技术VP | 法庭上的CTO(24)

赵新龙

CTO 法庭上的CTO

Terracotta的BigMemory力图消除针对Java缓存的垃圾回收_Java_Charles Humble_InfoQ精选文章