缓存java框架技术预研4:LazyUnsafeAllocator.java算法分析
2019独角兽企业重金招聘Python工程师标准>>>
LazyUnsafeAllocator.java这个类,如名字就知道懒惰,就如同c里面的malloc和free一样,没有做任何内存管理。
我们可以跟踪下代码如下:
@Override
public MemoryBuffer allocate( int size )
{
if ( capacity < used.get() + size ) //做一下容量控制
{
throw new BufferOverflowException();
}
long baseAddress = unsafe.allocateMemory( size );//直接调用类似malloc的方式来获取内存
UnsafeMemoryBuffer memoryBuffer = new UnsafeMemoryBuffer( baseAddress, size );//封装一下
memoryBuffers.add( memoryBuffer );//保留句柄
used.addAndGet( size );//保留使用大小
return memoryBuffer;
}
---下面是释放
@Override
public void free( MemoryBuffer memoryBuffer )
{
used.addAndGet( -memoryBuffer.capacity() );//重新更新使用量
memoryBuffer.free();//释放
memoryBuffers.remove( memoryBuffer );
}
那么 memoryBuffer.free();//释放是如何做的呢?
@Override
public void free()
{
unsafe.freeMemory( baseAddress );
}
看到了,直接通过类似free的方式还给了操作系统。
所以说,还是很简单的!
但是在生产环境中,没有内存池还是不太好!
转载于:https://my.oschina.net/qiangzigege/blog/618182
缓存java框架技术预研4:LazyUnsafeAllocator.java算法分析相关推荐
- java预研项目_缓存java框架技术预研3:JAVA缓存技术介绍
几个著名Java开源缓存框架介绍(OSCache,JSC) OSCache是个一个广泛采用的高性能的缓存框架,OSCache能用于任何Java应用程序的普通的缓存解决方案. OSCache有以下特点: ...
- 基于CKEditor网页富文本编辑工具转PDF文件的技术预研分析报告
目 录 基于CKEditor网页富文本编辑工具转PDF文件的技术预研分析报告 1 1. 预研背景 4 2. 预研目的和意义 4 3. 预研目标 4 4. 预研技术概述 4 5. 预研技术实现 7 5 ...
- 技术人文|声音捐赠,一场PBL式技术预研实验
你有没有想过,在不能说话的情况下该如何向不识字的摊主点不加香菜的二两毛细(拉面)? "用手比划?" "画在纸上?" "找别人帮忙?" 这 ...
- 附录H-2 技术预研报告
目 录 0. 文档介绍 4 摘要 4 读者对象 4 参考文档 4 术语与缩写解释 4 背景介绍 5 技术预研目标 5 技术预研取得的工作成果 5 技术A的研究报告 5 技术B的研究报告 5 文档介绍 ...
- Java压缩技术(四) GZIP——Java原生实现
转载自 Java压缩技术(四) GZIP--Java原生实现 GZIP常常用在linxu环境下,是一种非常简单的压缩算法.在Java实现API中,它仅仅包含两个实现类:GZIPInputStream ...
- 微信小程序开发技术预研分析报告
预研背景 本次预研是对微信小程序使用流程及开发技术的研究. 预研目的和意义 本次预研在于了解小程序具体语法.接口功能.具体实现方式等. 预研目标 通过微信小程序的技术研究可实现自主完成小程序的功能开发 ...
- D3.js的技术预研
背景 目前团队在可视化图表这里采用的Echarts来展示数据, 类似也是用第三方组件库提供的API,但在有的时候还是满足不了业务百变的需求. 预研目标 • 使用D3技术实现可视化功能 简介 D3是一个 ...
- 南京华为技术预研面试经历
按照约定,下班就直奔新街口的长发银座,不过想找到能上到7楼的电梯还真是有点困难,绕着转了一圈,很失败的先上了B座电梯,发现7楼的按钮按不了,最后才登上了A座电梯,到达了7楼.一出电梯门,偌大的几个华为 ...
- java的技术定义_java基础知识——Java的定义,特点和技术平台
(作者声明:对于Java编程语言,很多人只知道怎么用,却对其了解甚少.我也是其中一员.所以菜鸟的我,去查询了教科书以及大神的总结,主要参考了<Java核心技术>这本神作.现在分享给大家!) ...
最新文章
- 测试linux下磁盘的读写速率
- linux c 获取 CPU、内存、IO、磁盘、网速
- javascript经典实例_JavaScript 经典实例收集整理
- Android Navigation Drawer样式抽屉的使用
- java比较炫的登录界面_html+css实现漂亮的透明登录页面,HTML实现炫酷登录页面...
- vue中input多选_vue实现下拉多选vue实现多选下拉框
- VictoriaMetrics入门与实战
- Springboot使用FastJson后,接口返回中文乱码的问题解决。
- 过滤HTML标记、HTML注释、“!@#¥%”等非法字符
- (秒杀项目) 4.7 缓存商品与用户
- [转]Linux 基本操作(RM 删除)
- SQLyog——下载2058问题
- acwing-提高课
- win10外接显示器频繁休眠
- 笨方法学 python3怎么样_笨办法学python3日常问题解决
- CSMA/CD与CSMA/CA的区别
- moto edge s root与开启nfc门禁卡模拟
- Adobe Illustrator CC 关于路径查找器的使用
- 1082 Read Number in Chinese
- php网页爬虫-简单的类
热门文章
- Docker安装Nacos教程
- DedeCMS 批量删除垃圾注册用户和垃圾文档
- PHP定时抽奖怎么实现的,定时抽奖活动怎么做?
- iis swagger 部署_asp.net-core – 虚拟目录中的IIS站点Swagger UI端点
- oracle 提取连续数字,oracle 得到连续不重复的数字序列
- 找出游戏的必胜的策略(博弈论的学习)
- MySQL中的索引使用
- matlab机器人轨迹规划仿真程序,基于MATLAB的六自由度机器人轨迹规划与仿真.pdf...
- 带负荷测试要求二次最小电流_差动保护带负荷测试
- oracle数据库inactive状态session过多的原因定位