voltdb off heap内存的一点代码

ElasticHashinator.java,



m_tokens = Bits.unsafe.allocateMemory(bytes);
m_cleaner = Cleaner.create(this, new Deallocator(m_tokens, bytes));
private static class Deallocator implements Runnable {
    private long address;
    private int size;
    public Deallocator(long address, int size) {
        this.address = address;
        this.size = size;
    }

    @Override
    public void run() {
        if (address == 0) {
            return;
        }
        Bits.unsafe.freeMemory(address);
        address = 0;
        m_allocatedHashinatorBytes.addAndGet(-size);
    }
}
http://www.docjar.com/docs/api/sun/misc/Unsafe.htmlhttp://www.docjar.com/docs/api/sun/misc/Cleaner.html
时间: 2024-08-23 22:46:58

voltdb off heap内存的一点代码的相关文章

FastMM 定位内存泄露的代码位置(转)

FastMM 定位内存泄露的代码位置 开源的FastMM,使用很简单,在工程的第一行引用FastMM4即可(注意,一定要在第一个Uses的位置),可以在调试程序时提示内存泄露情况,还可以生成报告. 在Delphi2007以后版本中,使用更加简单,只需要在工程开始的位置加上语句: ReportMemoryLeaksOnShutdown := True;就可以了,并且在运行时不会出现提示.如果想要生成文件报告,还需要FastMM4,Delphi中没有别的设置可以生成文件报告. 可以修改FastMM4

转:程序内存空间(代码段、数据段、堆栈段)

https://blog.csdn.net/ywcpig/article/details/52303745 在冯诺依曼的体系结构中,一个进程必须有:代码段,堆栈段,数据段. 进程的虚拟地址空间图示如下: BSS段:BSS段(bss segment)通常是指用来存放程序中未初始化的全局变量的一块内存区域.BSS是英文Block Started by Symbol的简称.BSS段属于静态内存分配. 数据段:数据段(data segment)通常是指用来存放程序中已初始化的全局变量的一块内存区域.数据

百度地图demo中的一点代码的优化

1 @implementation RootViewController 2 3 - (void)viewDidLoad 4 { 5 [super viewDidLoad]; 6 _demoNameArray = [[NSArray alloc]initWithObjects: 7 @"基本地图功能-MapViewBaseDemo", 8 @"多地图使用功能-MultiMapViewDemo", 9 @"图层展示功能-MapViewDemo",

superMap Object 属性查看的一点代码

using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; using HZZYKJ.IDRMIS.CORE; using SuperMap.Mapping; using SuperMap.U

记一道面试题:手写一个内存泄漏的代码,如何修正

前几天面试的时候被问到手写一个内存泄漏的代码,并且如何修正,当时有点蒙,后来面试官写了三行代码,如下 1 Object obj1=new Object(); 2 Object obj2=new Object(); 3 obj1=obj2; 试分析是否出现内存泄漏,为什么, 首先,先了解一下内存泄漏是什么?百度百科给了一个答案 简单的说就是我们已经不需要的对象,它没有被清理,依旧存在堆内存中.但是项目一旦运行又不会时长终止,那么这个对象就会一直存在,占用空间也会进行累计. 上面的代码是存在内存泄漏

【嵌入式开发】裸机引导操作系统和ARM 内存操作 ( DRAM SRAM 类型 简介 | Logical Bank | 内存地址空间介绍 | 内存芯片连接方式 | 内存初始化 | 汇编代码示例 )

[嵌入式开发]ARM 内存操作 ( DRAM SRAM 类型 简介 | Logical Bank | 内存地址空间介绍 | 内存芯片连接方式 | 内存初始化 | 汇编代码示例 ) 一. 内存 简介 1. 两大内存分类 ( 1 ) DRAM 简介 ( 定期刷新 | 速度慢 | 成本低 ) DRAM 简介 : 1.硬件描述 : DRAM 基本由一个个小电容基本原件组成, 电容的两端保留电荷; 2.优缺点描述 : ① 优点 : 成本很低, 很便宜; ② 缺点 : 需要 定期刷新数据, 速度较慢; a.

OOM内存溢出java代码实例1

代码如下: 1 package com.github.mayangbo666.test; 2 3 import java.util.ArrayList; 4 import java.util.List; 5 6 public class OOM1 { 7 public static void main(String[] args) { 8 List<Byte[]> list = new ArrayList<>(); 9 int i = 0; 10 try { 11 while (t

5G的7位电话号码,去重,内存20mb,代码实现。

转自:http://www.aboutyun.com/thread-11139-1-1.html 答案:首先,这个题考的不是分布式7位数,至少要用int来保存,那么int为4字节,20MB内存 10^7*4/1024*1024=38.14697265625  至少需要38MB,显然7位的数字不能全部保存保存一个数字不能用4字节,要用2字节或1字节,那么只能用short或byte,但是short最大65536,byte最大256,不能满足.思路:不管电话号码存在不存在,所有的电话号码一共有10^7

android service常驻内存的一点思考

我们总是不想自己的Android service被系统清理,以前时候大家最常用的办法就是在JNI里面fork出子进程,然后监视 service进程状态,被系统杀死了就重启它. 我分别在android4.3和android5.0上面测试了LBE的清理内存功能,看看是不是会达到不被清理的目的,发现在这两个版本上还是有一些区别的 先说一下我们的代码,我们的service在单独的进程中,在service中调用JNI的代码,然后fork出一个进程,然后让我们的service进程和fork出来的子进程一直运