内存 – 多线程堆管理
发布时间:2020-09-22 02:25:20 所属栏目:Java 来源:互联网
导读:在C/C++中,我可以在一个线程中分配内存,并在另一个线程中删除它.然而,只要有人从堆中请求内存,堆分配器就需要走堆,找到适合大小的空闲区.两个线程如何有效地访问同一个堆,而不会破坏堆? (这是通过锁定堆吗?) 一般来说,您不需要担心内存分配器的线程安全性.
|
在C/C++中,我可以在一个线程中分配内存,并在另一个线程中删除它.然而,只要有人从堆中请求内存,堆分配器就需要走堆,找到适合大小的空闲区.两个线程如何有效地访问同一个堆,而不会破坏堆? (这是通过锁定堆吗?) 解决方法一般来说,您不需要担心内存分配器的线程安全性.所有标准内存分配器 – 即MacOS,Windows,Linux等附带的内存分配器 – 都是线程安全的.锁是提供线程安全性的标准方式,尽管可以编写仅使用原子操作而不是锁的内存分配器.现在这是一个完全不同的问题:这些内存分配器是否缩放;也就是说,它们的性能与执行内存操作的线程数无关?在大多数情况下,答案是否定的;他们要么放慢,要么消耗更多的记忆.第一个可扩展分配器(速度和空间)是Hoard(我写的); Mac OS X分配器的灵感来自于它 – 并将其引用到文档中 – 但是Hoard更快.还有其他的,包括Google的tcmalloc. (编辑:日照站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- java – 从移动设备到服务器的强大文件传输
- Spring类型转换 ConversionSerivce Convertor解析
- java – 通过’ContentResolver’删除文件,而不是通过’fil
- Spring Boot中使用jdbctemplate 操作MYSQL数据库实例
- java实现二维码生成的几个方法(推荐)
- java – 使用Apache Mina作为模拟/内存SFTP服务器进行单元测
- 详解五种方式让你在java中读取properties文件内容不再是难题
- java – 我应该使用什么类型的数据结构来保存表行?
- 在这种情况下,一个java垃圾收集的年轻一代长久?
- 详解Java正则表达式中Pattern类和Matcher类
