java 线程 内存分配内存_漫谈JAVA语言的内存分配

在说JAVA语言的内存分配之前,我们先聊聊OS的Memory Management,这是学习操作系统课程的一个重要内容。从这里开始理解内存分配有利于理解的更深入。

我们知道物理内存是由page 和segment 方式混合管理的,映射的过程如下图所示:

从物理地址到虚地址的映射后,一个进程的内存布局大概是下图这个样子的。

Stack区用于存储local variable和函数参数,Heap区用于存储动态分配的内存,即malloc分配的内存。默认由glibc ptmalloc2管理。当然也可以替换成性能更好的tcmalloc和jemalloc。

JVM的内存管理可以分成两块,一块是native memory的管理,一块就是JAVA语言的管理。JAVA语言的内存管理当然最终基于native memory来实现。

下图是从JAVA语言看内存布局。

其中堆内存的布局又是如下的:

为了提高多线程内存分配的性能,避免在内存分配阶段有锁竞争。在Eden区其实存在TLAB(Thread local allocator buffer)区。因此,针对java语言中的新建一个对象(内存分配),存在两种情况。The thread gets a new TLAB

The object is allocated outside TLAB

TLAB的大小通常是有限的,如果线程中经常分配一个大对象/大数组,TLAB放不下,就会在Eden的outside TLAB分配,竞争就会加剧,性能就会下降。因此,建议线程中如果有大对象的频繁分配,建议减小这个大对象的尺寸,或者分成两次分配。

下面提供实际做内存分配的函数。

// JDK 7-9

_ZN11AllocTracer33send_allocation_in_new_tlab_event

_ZN11AllocTracer34send_allocation_outside_tlab_event

// JDK 10+

_ZN11AllocTracer27send_allocation_in_new_tlab

_ZN11AllocTracer28send_allocation_outside_tlab

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/512820.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【产品干货】经典营销模型的产品化介绍

简介: 为什么说Quick Audience是集数据资产构建、用户分析、精准营销投放、跨端社交互动和全域会员管理为一体的全域消费者运营平台,其中一个很大的原因是置入了经典营销模型,如RFM模型与AIPL模型,由方法论支撑消费者运营&#xf…

python 多线程 廖雪峰_python中多线程与多进程中的数据共享问题

之前在写多线程与多进程的时候,因为一般情况下都是各自完成各自的任务,各个子线程或者各个子进程之前并没有太多的联系,如果需要通信的话我会使用队列或者数据库来完成,但是最近我在写一些多线程与多进程的代码时,发现…

填平数据、产品、模式需求鸿沟,浪潮云发布新一代行业云 MEP战略

围绕安全这一核心,浪潮云从新模式(New Model)、新要素(New Essential Factor)、新产品(New Product)三大方面出发,提出新一代行业云MEP战略。 出品 | CSDN云计算 12月16日&#xff0…

hpsocket java代码_HPSocket介绍与使用

一、HPSocket介绍HP-Socket是一套通用的高性能TCP/UDP/HTTP 通信框架,包含服务端组件、客户端组件和Agent组件,广泛适用于各种不同应用场景的TCP/UDP/HTTP通信系统,提供C/C、C#、Delphi、E(易语言)、Java、Python等编程语言接口。HP-Socket对…

Dapr 在阿里云原生的实践

简介: Faas 场景下,比较吸引用户的是成本和研发效率,成本主要通过按需分配和极致的弹性效率来达成。而应用开发者期望通过 FaaS 提供多语言的编程环境,提升研发效率,包括启动时间、发布时间、开发的效率。​ 作者&…

postgre 生成数据库html文档_还在手动整理数据库文档?试试这个(螺丝钉)数据库文档生成工具...

简介在企业级开发中、我们经常会有编写数据库表结构文档的时间付出,从业以来,待过几家企业,关于数据库表结构文档状态:要么没有、要么有、但都是手写、后期运维开发,需要手动进行维护到文档中,很是繁琐、如…

OpenFaaS - 以自己的方式运行容器化函数

作者 | Addo Zhang来源 | 云原生指北译者注: 本文篇幅较长,有助于了解 FaaS 和 OpenFaaS。作者分别从开发人员和运维人员的视角来了解 OpenFaaS,对了解新的技术是个很好的方式。本文翻译自 Ivan Velichko[1] 的 OpenFaaS - Run Containerized…

技术人生第5篇——浅谈如何成为技术一号位?

简介: 认清每个人自己在日常工作中的思维定式非常重要,有助于转变自己对很多事情的认知,而这种转变也会从根本上带来行为上的变化。也就是说,可以通过理论分析和实践,来共同完成对个人实际生活的影响。今天这篇文章&am…

元宇宙真的是「割韭菜」吗?

作者 | 小枣君来源 | 鲜枣课堂我们究竟该如何看待元宇宙?元宇宙为什么会火?它到底有没有价值?它真的是“割韭菜”吗?今天这篇文章,小枣君想说说自己的看法。█ 元宇宙为什么会火?元宇宙的蹿红速度&#xff…

阿里仿真灰度变更测试简介

简介: 基础网络产品的生命周期大致包含研发、架构、交付、优化和运营等几个环节,每一个环节的质量保证都涉及重要的一环,即预期验证测试。本文将重点讲解一下如何在仿真测试平台进行灰度变更测试,从而保证变更的稳定性。 作者 | 聪…

树莓派开始玩转linux pdf_用树莓派构建 Kubernetes 集群 | Linux 中国

将 Kubernetes 安装在多个树莓派上,实现自己的“家庭私有云”容器服务。• 来源:linux.cn • 作者:Chris Collins • 译者:Xingyu.Wang •(本文字数:14330,阅读时长大约:18 分钟)将 Kubernetes …

非标准化的阀门企业也在用钉钉宜搭实现数字化转型

简介: 增长对于所有企业来说,都是机遇与挑战并存。对非标准化的制造企业来说,增长是一把双刃剑,它既是订单增长带来的销售提升,同时在另一边则往往是“低效与浪费”的困扰。 困扰非标制造业的两大难题 1、增长期的“…

慢SQL治理分享

简介: 这里的慢SQL指的是MySQL慢查询,是运行时间超过long_query_time值的SQL。真实的慢SQL通常会伴随着大量的行扫描、临时文件排序或者频繁的磁盘flush,直接影响就是磁盘IO升高,让正常的SQL变成了慢SQL,大面积执行超时…

英特尔表示:元宇宙的路还很长

编译 | 禾木木出品 | CSDN云计算(ID:CSDNcloud)现在每个人都在谈论元宇宙,各大公司也都在致力于访问它的硬件,而且它似乎最终可能成为万维网规模的下一个主要通信平台。但如果你问的话,「最终」还是有很长的…

java csv 追加_如何在Java中添加一个包含CSV数据的列

基于plirke示例代码和他的帮助,我编写了一个最终的工作代码。在这里分享它,这样它可能对有类似需求的人有用。import java.io.BufferedReader;import java.io.BufferedWriter;import java.io.File;import java.io.FileReader;import java.io.FileWriter;import java.io.IOExcep…

案例|自建or现成工具?小型创业团队敏捷研发探索

简介: 实践和踩坑建议。 我是刘永良,是一名全栈开发者也是一名创业者,来自济南——一个目前被称为互联网洼地的地方。2020年4月和三位志同道合的朋友,在济南共同创建了山东旷野网络科技有限公司,主要从事自有项目和外包…

代码智能技术如何应用到日常开发?

简介: 原理与演示。 01/ 从开发者的烦恼说起 开发者在编写代码时,需要花费大量时间在低层次的重复编码上,特别是针对一些语法比较冗余的开发语言。 同时,开发者经常被戏称为面向搜索引擎编程,因为我们经常需要通过…

sql server tcp 信号灯超时时间已到_「图文详解」TCP为啥要3次握手和4次挥手?3次挥手不行吗?...

原文链接:https://www.cnblogs.com/qdhxhz/p/8470997.htmlTCP有6种标示:SYN(建立联机) ACK(确认) PSH(传送) FIN(结束) RST(重置) URG(紧急)一、TCP三次握手第一次握手客户端向服务器发出连接请求报文,这时报文首部中的同部位SYN1,同时随机生…

F5:2022年应用交付和安全领域趋势展望

作者 | F5中国区金融事业部技术总监兼安全事业部副总经理 陈亮 出品 | CSDN 云计算 随着人工智能(AI)、物联网 (IoT)等技术的日益普及,企业拥抱互联网技术的程度不断提高,越来越多的企业开始考虑利用数字化来提升劳动生产率和利用电子商务扩…

java的class文件在哪里_传统上,你在哪里存储Java .class文件?

如果你不熟悉它,你应该研究Java classpath的主题.我记得当我第一次开始用Java编程时发现这个令人困惑.Java中有.class文件的定义搜索路径;当你运行设置类路径的java -cp blahblahblah时. java -jar blahblahblah.jar打开一个JAR file,.jar文件的清单可以指示类路径.默认的类路径…