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算法分析相关推荐

  1. java预研项目_缓存java框架技术预研3:JAVA缓存技术介绍

    几个著名Java开源缓存框架介绍(OSCache,JSC) OSCache是个一个广泛采用的高性能的缓存框架,OSCache能用于任何Java应用程序的普通的缓存解决方案. OSCache有以下特点: ...

  2. 基于CKEditor网页富文本编辑工具转PDF文件的技术预研分析报告

    目  录 基于CKEditor网页富文本编辑工具转PDF文件的技术预研分析报告 1 1. 预研背景 4 2. 预研目的和意义 4 3. 预研目标 4 4. 预研技术概述 4 5. 预研技术实现 7 5 ...

  3. 技术人文|声音捐赠,一场PBL式技术预研实验

    你有没有想过,在不能说话的情况下该如何向不识字的摊主点不加香菜的二两毛细(拉面)? "用手比划?"  "画在纸上?"  "找别人帮忙?" 这 ...

  4. 附录H-2 技术预研报告

    目 录 0. 文档介绍 4 摘要 4 读者对象 4 参考文档 4 术语与缩写解释 4 背景介绍 5 技术预研目标 5 技术预研取得的工作成果 5 技术A的研究报告 5 技术B的研究报告 5 文档介绍 ...

  5. Java压缩技术(四) GZIP——Java原生实现

    转载自  Java压缩技术(四) GZIP--Java原生实现 GZIP常常用在linxu环境下,是一种非常简单的压缩算法.在Java实现API中,它仅仅包含两个实现类:GZIPInputStream ...

  6. 微信小程序开发技术预研分析报告

    预研背景 本次预研是对微信小程序使用流程及开发技术的研究. 预研目的和意义 本次预研在于了解小程序具体语法.接口功能.具体实现方式等. 预研目标 通过微信小程序的技术研究可实现自主完成小程序的功能开发 ...

  7. D3.js的技术预研

    背景 目前团队在可视化图表这里采用的Echarts来展示数据, 类似也是用第三方组件库提供的API,但在有的时候还是满足不了业务百变的需求. 预研目标 • 使用D3技术实现可视化功能 简介 D3是一个 ...

  8. 南京华为技术预研面试经历

    按照约定,下班就直奔新街口的长发银座,不过想找到能上到7楼的电梯还真是有点困难,绕着转了一圈,很失败的先上了B座电梯,发现7楼的按钮按不了,最后才登上了A座电梯,到达了7楼.一出电梯门,偌大的几个华为 ...

  9. java的技术定义_java基础知识——Java的定义,特点和技术平台

    (作者声明:对于Java编程语言,很多人只知道怎么用,却对其了解甚少.我也是其中一员.所以菜鸟的我,去查询了教科书以及大神的总结,主要参考了<Java核心技术>这本神作.现在分享给大家!) ...

最新文章

  1. 测试linux下磁盘的读写速率
  2. linux c 获取 CPU、内存、IO、磁盘、网速
  3. javascript经典实例_JavaScript 经典实例收集整理
  4. Android Navigation Drawer样式抽屉的使用
  5. java比较炫的登录界面_html+css实现漂亮的透明登录页面,HTML实现炫酷登录页面...
  6. vue中input多选_vue实现下拉多选vue实现多选下拉框
  7. VictoriaMetrics入门与实战
  8. Springboot使用FastJson后,接口返回中文乱码的问题解决。
  9. 过滤HTML标记、HTML注释、“!@#¥%”等非法字符
  10. (秒杀项目) 4.7 缓存商品与用户
  11. [转]Linux 基本操作(RM 删除)
  12. SQLyog——下载2058问题
  13. acwing-提高课
  14. win10外接显示器频繁休眠
  15. 笨方法学 python3怎么样_笨办法学python3日常问题解决
  16. CSMA/CD与CSMA/CA的区别
  17. moto edge s root与开启nfc门禁卡模拟
  18. Adobe Illustrator CC 关于路径查找器的使用
  19. 1082 Read Number in Chinese
  20. php网页爬虫-简单的类

热门文章

  1. Docker安装Nacos教程
  2. DedeCMS 批量删除垃圾注册用户和垃圾文档
  3. PHP定时抽奖怎么实现的,定时抽奖活动怎么做?
  4. iis swagger 部署_asp.net-core – 虚拟目录中的IIS站点Swagger UI端点
  5. oracle 提取连续数字,oracle 得到连续不重复的数字序列
  6. 找出游戏的必胜的策略(博弈论的学习)
  7. MySQL中的索引使用
  8. matlab机器人轨迹规划仿真程序,基于MATLAB的六自由度机器人轨迹规划与仿真.pdf...
  9. 带负荷测试要求二次最小电流_差动保护带负荷测试
  10. oracle数据库inactive状态session过多的原因定位