OpenHFT Java Lang项目

OpenHFT / Java Lang从Apache 2.0库开始,提供Java Chronicle使用的低级功能,而无需持久存储到文件中。 这允许对数据进行可序列化和反序列化,以及对本机空间(堆外)中的内存的随机访问。它支持使用对象池写入和读取可枚举类型。 例如,在不创建对象的情况下编写和读取String(如果已将其池化)。 它还支持以二进制和文本形式写入和读取原始类型,而不会产生任何垃圾。 小消息可以在微秒内序列化和反序列化。

最近增加

Java Lang支持DirectStore,类似于ByteBuffer,但可以是任意大小(在大多数系统上,最大为40到48位)。它支持64位大小和偏移量。 它支持压缩类型和对象序列化。 它还支持线程安全功能,例如易失性读取,有序(惰性)写入,CAS操作以及将int(4字节)用作本机内存中的锁。

在Java中测试本机内存锁

该测试具有一个锁和一个可切换的值。 一个线程将值从0更改为1,另一个线程将其从1更改为0。这大约进行了2000万次,但运行时间更长

final DirectStore store1 = DirectStore.allocate(1L << 12);final int lockCount = 20 * 1000 * 1000;new Thread(new Runnable() {@Overridepublic void run() {manyToggles(store1, lockCount, 1, 0);}}).start();manyToggles(store1, lockCount, 0, 1);store1.free();

manyToggles方法更有趣。 请注意,将偏移量为0的4个字节用作锁定。 您可以通过这种方式在本机空间中安排任意数量的锁。 例如,您可能有固定长度的记录,并希望能够在更新或访问它们之前将其锁定。 您可以在记录的“开头”放置一个锁。

private void manyToggles(DirectStore store1, int lockCount, int from, int to) {long id = Thread.currentThread().getId();assertEquals(0, id >>> 24);System.out.println("Thread " + id);DirectBytes slice1 = store1.createSlice();for (int i = 0; i < lockCount; i++) {assertTrue(slice1.tryLockNanosInt(0L, 10 * 1000 * 1000));int toggle1 = slice1.readInt(4);if (toggle1 == from) {slice1.writeInt(4L, to);} else {i--;}slice1.unlockInt(0L);}}

DataStore的大小及其中的偏移量很长,因此您可以将连续的本机内存块分配到多个GB中,并根据需要进行访问。 在我的2.6 GHz i5笔记本电脑上,此测试获得以下输出

Contended lock rate was 9,096,824 per second

这看起来不错,但在激烈的争用中,可以保留一个线程。 这对于许多锁和较低的争用更为有用。 注意:如果我将超时时间从10毫秒降低到1毫秒,它最终将失败,这意味着有时需要花费超过1毫秒的时间才能获得锁定!

结论

Java Lang库正在采取步骤,使其更容易使用具有堆上可用功能的本机内存。 语言支持不是很好,但是如果需要存储128 GB的数据,则可以使用堆外内存获得更好的GC行为。

参考:来自Vantage Java博客的JCG合作伙伴 Peter Lawrey的OpenHFT Java Lang项目 。

翻译自: https://www.javacodegeeks.com/2013/07/openhft-java-lang-project.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/368135.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

spring cloud-spring boot 文档信息

官网&#xff1a; spring boot springcloud 学习资源 使用IDEA创建SpringBoot项目 Spring Boot教程 https://blog.csdn.net/forezp/article/details/70341818 Spring Cloud教程 http://blog.csdn.net/forezp/article/details/70148833 Spring Cloud教程 http://blog.csdn.net…

python基础学习笔记(十三)

re模块包含对 正则表达式。本章会对re模块主要特征和正则表达式进行介绍。 什么是正则表达式 正则表达式是可以匹配文本片段的模式。最简单的正则表达式就是普通字符串&#xff0c;可以匹配其自身。换包话说&#xff0c;正则表达式’python’ 可以匹配字符串’python’ 。你可以…

OD debug matlab,OllyDebug基本使用方法

OD是逆向过程中最好的动态调试工具&#xff0c;这次来记录学习笔记。(特别鸣谢石总)1、OD的工作界面最开始要学的就是界面的使用N了吧&#xff0c;这里分各个框来解释下&#xff1a;列举各个框用处&#xff1a;可以看到下面一框框东西&#xff1a;这些一时半会用不到&#xff0…

设计模式:策略

这次我想谈谈策略设计模式 。 通过这种方式&#xff0c;我开始撰写有关行为设计模式的文章。 这些模式表示对象之间的某些交互模式&#xff0c;以使代码更灵活且组织得更好。此方法的最本质点是对象之间的松散耦合。 当您的应用程序中有多个实现目的的实现时&#xff0c;应使用…

css 学习整理

1、 background-attachment :fixed 属性防止背景图片这种滚动&#xff0c;它默认值是 scroll&#xff0c;也就是说&#xff0c;在默认的情况下&#xff0c;背景会随文档滚动2、font-weight 属性设置文本的粗细&#xff08;关键字 100 ~ 900 为字体指定了 9 级加粗度。如果一个字…

php抓取网页中的内容

以下就是几种常用的用php抓取网页中的内容的方法。1.file_get_contentsPHP代码代码如下:>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>&g…

本地搭建WordPress (XAMPP环境)

1&#xff0c;XAMPP是一个流行的PHP开发环境&#xff0c;官网下载&#xff1a; https://www.apachefriends.org/zh_cn/index.html 然后安装。 官方介绍&#xff1a;XAMPP是最流行的PHP开发环境 XAMPP是完全免费且易于安装的Apache发行版&#xff0c;其中包含MariaDB、PHP和Pe…

php中的thumb函数,phpcms v9 thumb(缩略图) 函数说明

打开phcmsc/libs/functions/global.func.PHP文件&#xff0c;找到如下代码&#xff1a;$width_t || $height>$height_t) return $imgurl;$newimgurl dirname($imgurl_replace)./thumb_.$width._.$height._.basename($imgurl_replace);if(file_exists($upload_path.$newimgu…

CSS3 选择器——属性选择器

上一节在《CSS3选择器——基本选择器》中主要介绍了CSS3选择器的第一部分&#xff0c;这节主要和大家一起来学习CSS3选择器的第二部分——属性选择器。属性选择器早在CSS2中就被引入了&#xff0c;其主要作用就是对带有指定属性的HTML 元素设置样式。使用CSS3属性选择器&#x…

设计模式:生成器

有时需要在应用程序中创建一个复杂的对象。 一种解决方案是Factory模式&#xff0c;另一种是Builder设计模式。 在某些情况下&#xff0c;您甚至可以结合使用这两种模式。 但是在本文中&#xff0c;我想研究一下Builder设计模式 。 我需要说的第一件事是创造模式。 在什么情况…

Hadoop(5)--java编写hdfs程序

1、hdfs系统会把用到的数据存储在core-site.xml中由hadoop.tmp.dir指定&#xff0c;而这个值默认位于/tmp/hadoop-${user.name}下面&#xff0c; 由于/tmp目录在系统重启时候会被删除&#xff0c;所以应该修改目录位置。 修改core-site.xml(在所有站点上都修改) <property&g…

oracle10g服务安装图解,Oracle 10G服务器安装图解

Oracle 10G服务器安装图解Oracle 10g 在window 下的安装概述1.数据库概述Oracle 应用服务器 10g 是集成的、基于标准的软件平台&#xff0c;Oracle Application Server 10g 是继 Oracle9i Application Server (Oracle9iAS) Release 2.0 version 9.0.2 和 version 9.0.3 之后的最…

Java 7试用资源

Java 7为完成使用后需要关闭的资源&#xff08;例如文件&#xff0c;流&#xff0c;数据库连接和套接字&#xff09;提供了更好的资源管理。 这种语言构造称为try-with-resources语句。 完成这项工作的机制称为AutoCloseable接口。 Java 7资源类均实现此接口。 该接口的签名如下…

css平行四边形与菱形变换

*以下技巧均源自于Lea Verou所著《CSS Secrets》 平行四边形 平行四边形的构造可以基于矩形通过skew()的变形属性进行斜向拉升得到&#xff08;skew所用的坐标系&#xff0c;纵向是X轴&#xff0c;横向是Y轴&#xff0c;与常见的坐标系相反&#xff09;。 <!DOCTYPE html&g…

redis 启动配置文件加载报错 service redis does not support chkconfig

# chkconfig:2345 90 10 # description:Redis is a persistent key-value database 网上资料 上面的注释的意思是&#xff0c;redis服务必须在运行级2&#xff0c;3&#xff0c;4&#xff0c;5下被启动或关闭&#xff0c;启动的优先级是90&#xff0c;关闭的优先级是10。 附录&…

Android 获取ROOT权限原理解析

一、 概述本文介绍了android中获取root权限的方法以及原理&#xff0c;让大家对android玩家中常说的“越狱”有一个更深层次的认识。二、 Root的介绍1. Root 的目的可以让我们拥有掌控手机系统的权限&#xff0c;比如删除一些system/app下面的无用软件&#xff0c;更换开…

oracle事务提交前更新机制,Oracle 事务机制 批量添加,修改,更新

---------------------------------------------------------------------------------------------2011-12-14编辑-------------------------------------------------------------------------------------------------------------------using (OracleConnection oc new Or…

webpack实用配置

注意&#xff1a;以下内容是在vue-cli脚手架的基础上进行添加&#xff01; 1、单个文件抽离 webpack.base.conf.js里边的webpackConfig{}里边对入口文件进行配置&#xff0c;输入你想要抽离的文件&#xff0c;比如vux这个ui框架很大&#xff0c;很有必要抽离 entry: {app: ./sr…

设计模式:原型

创新设计模式之一是原型设计模式 。 尽管原型是创造模式&#xff0c;但它在概念上与其他模式有所不同。 我的意思是原型在某种意义上创造了自己。 我将在下面解释。 原型模式的所有魔力都基于Java Object的clone&#xff08;&#xff09;方法。 因此&#xff0c;让我们考虑一…

SecureCRT连接AWS EC2云主机密码登录

申请了亚马逊的EC2&#xff0c;要通过ssh 加密钥的形式登录&#xff0c;特别麻烦&#xff0c;而且感觉ssh登录AWS的云主机后好卡&#xff0c;这里是更改成用户名和密码的形式登录云主机&#xff0c;可以通过SecureCRT直接登录 1、首先通过ssh登录到EC2&#xff0c;类似于ssh -i…