文档章节

Erlang Term sharing

rongtou
 rongtou
发布于 2016/11/20 22:08
字数 307
阅读 16
收藏 0

Erlang虽然变量不可变,但实际上为了节省内存,还是存在Term Sharing数据项共享的。但以下情况时会使共享实效,摘抄自文档。

Shared subterms are not preserved in the following cases:

  • When a term is sent to another process
  • When a term is passed as the initial process arguments in the spawn call
  • When a term is stored in an Ets table

关注内存,自然就会想计算出term在内存中的实际大小,而erlang也提供了相应的方法供我们使用。

erts_debug:size/1erts_debug:flat_size/1 都是不在正式文档中的函数, 可以用来计算erlang数据项在内存中所需要空间。这两个函数区别在于, 在具有共享内存的数据结构中, erts_debug:size/1只计算一次共享的数据大小, 而erts_debug:flat_size/1则会重复计算

文档有说明每种term大小的计算方法。erlang_term这个项目有提供计算出term在内存的大小,是会计算出binary实际占用的部分。不管binary是大于64K时的refc binary,还是在heap上分配那部分。

链接1链接2介绍了因term数据展开后,因sharing失效导致的一些陷阱。

© 著作权归作者所有

共有 人打赏支持
rongtou

rongtou

粉丝 5
博文 9
码字总数 4533
作品 0
广州
程序员
【原创】Erlang 之 match 和 compare equal

在学习 Erlang 过程中,经常会遇到以下两个和比较相关的操作:match 和 compare equal 。现作如下解释: 当两个 Erlang term 拥有完全相同类型和值时,我们称它们 match 。例如:1 match 1 为...

摩云飞
2013/02/04
0
3
[Erlang 0013]抓取Erlang进程运行时信息

[Erlang 0012]Erlang Process input queue 一文我们提到使用erlang:processinfo/1抓取进程运行时状态信息,有时我们需要把节点内所有的进程的信息都抓取下来,便于分析整个节点内进程的运行状...

唐玄奘
2017/12/03
0
0
收藏的博客 -- erlang学习

一、技术博客 http://blog.csdn.net/erlib 为什么我要选择erlang+go进行服务器架构(1) 为什么我要选择erlang+go进行服务器架构(2) http://www.qingliangcn.org/ https://github.com/qinglian...

libaineu2004
2017/09/14
0
0
[Erlang 0055] Erlang Shared Data using mochiglobal

%% @doc Abuse module constant pools as a "read-only shared heap" (since erts 5.6) Erlang 进程之间的消息发送都是通过数据拷贝实现的,只有一个例外就是同一个Erlang节点内的 refc binar...

唐玄奘
2017/12/10
0
0
Recursion and Tail Recursion in Java and Erlang

Typical Recursion Example (hanoi problem) public void move(int n, String strFrom, String strTemp, String strTo) { if (n == 1) { show(1, strFrom, strTo); } else { move(n - 1, str......

iamtwang
2014/08/23
0
1

没有更多内容

加载失败,请刷新页面

加载更多

docker-compose ,docker-stack

1.例子 version: "3"services: php: image: registry.cn-hangzhou.aliyuncs.com/lxepoo/apache-php5 ports: - "38080:80" networks: - my_php_mysql volum......

chenbaojun
24分钟前
1
0
SQL_Server2000示例数据库NorthWind的分析(转)

SQL_Server2000示例数据库NorthWind的分析 表名:Categories(食品类别表) 表结构: 字段名称 数据类型 长度 允许为空 CategoryID(主键) int 4 否 CategoryName nvarchar 15 否 Description ...

QQZZFT
27分钟前
1
0
laravel 5.5 Session store not set on request.

laravel 5.5 数据存入session,会出现Session store not set on request.错误。查了下laravel 5.5将session放到global middleware中,需要laravel的文件 ./app/Http/Kernel.php中的加上一句:...

MichaelShu
今天
1
0
OpenCV VideoCapture.get()参数详解

param define cv2.VideoCapture.get(0) 视频文件的当前位置(播放)以毫秒为单位 cv2.VideoCapture.get(1) 基于以0开始的被捕获或解码的帧索引 cv2.VideoCapture.get(2) 视频文件的相对位置(...

NateHuang
今天
0
0
java基础知识,小栗子

来操作一下数组.....注意带参数的变长数组的使用. package com.avatus;import java.util.Random;import java.util.Scanner;public class Main { public static void main(St...

Oh_really
今天
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部