爱库里 爱库里
3年前
图文并茂讲清楚 JavaScript 内存管理
作为一个JavaScript的开发者,大多数情况下你可能不会担心内存管理问题,因为JavaScript引擎会帮你处理这些。但是在开发过程中,你或多或少的会遇到一些相关的问题,比如内存泄漏等,只有了解了内存分配的工作机制,你才会知道如何去解决这些问题。在这篇文章中,我将会向你介绍内存分配和垃圾收集的机制,以及如何避免一些常见的内存泄漏的
【Java面试题】阿里+头条+腾讯大厂Java笔试真题
垃圾回收算法垃圾回收算法的实现设计到大量的程序细节,并且每一个平台的虚拟机操作内存的方式都有不同,所以不需要去了解算法的具体实现。复制算法将可用内存按容量划分为大小相等的两块,每次只使用其中的一块。当这一块的内存用完了,就将还存活着的对象复制到另外一块上面,然后再把已使用过的内存空间一次清理掉。这样使得每次都是对整个半区进行内存回收,内存分配时也就不用考虑
火山引擎MARS-APMPlus 应用性能监控帮助客户Java OOM崩溃率下降80%
本文将会从Java内存基础开始,详细介绍“基于Hprof内存快照的线上JavaOOM归因方案”的底层原理与技术细节,欢迎接入MARSAPMPlus应用性能监控使用。作者:字节跳动终端技术——王涛一、前言如何定位和解决AndroidApp因为内存不足(JavaOOM)引发的线上问题一直是业界的难题。崩溃场景能抓取到的常规信息中并不包括内存分配详情——不了解内存被谁持有,自然也无法追查内存不足的根源。针对这个问题,ClientInfra和头条抖音等业务方合作,通过一系列技术调研,自研了一套基
DevOpSec DevOpSec
3年前
内存问题定位与解决
内存问题定位基本流程:主要用到的性能计数器1.Pagelifeexpectancy (数据库计数器:主要显示不被使用的页,将在缓存中停留的秒数)2.
Stella981 Stella981
3年前
Redis的分片机制包含对一致性HASH算法的运用
前言:大家都知道redis单台的默认内存大小一般是10M.如果现在需要我们将1G的数据保存到内存中。这该如何做到呢?比如我们就用单台redis,但是一味的扩大单台redis内存则直接影响执行的效率,会有一种得不偿失的感觉。于是呢,我们就得采用分片策略实现数据保存,通过多台redis共同为用户提供内存得支持,实现内存扩容,提高执行效率!!
Stella981 Stella981
3年前
Linux 内核 VS 内存碎片 (上)
(外部)内存碎片是一个历史悠久的Linux内核编程问题,随着系统的运行,页面被分配给各种任务,随着时间的推移内存会逐步碎片化,最终正常运行时间较长的繁忙系统可能只有很少的物理页面是连续的。由于Linux内核支持虚拟内存管理,物理内存碎片通常不是问题,因为在页表的帮助下,物理上分散的内存在虚拟地址空间仍然是连续的(除非使用大页),但对于需要从内核线性
Wesley13 Wesley13
3年前
VisualVM 使用心得
JDK中有个好用的工具“VisualVM”可以实时可视化的查看到java程序内存变化情况,对于理解GC和java内存管理还是有很大帮助的,以前看论坛看帖子讲到java内存管理真是各说纷纭啊!有人说“JVM的内存分为两块堆和栈”,还有人说"JVM的内存分为三块(新生代、老年代、方法区)",想必很多人和我一样都搞得有点摸不着头脑了吧。下面来眼见为实:工欲善
Stella981 Stella981
3年前
Linux环境下Swap配置方法
在Unix/Linux环境下,Swap是比较重要的空间配置内容。Swap出现的背景源于对物理内存的使用特性。相对于外存储器(硬盘)而言,内存速度具有很强的优势。但是,出于经济方面和技术方面的一些原因,物理内存在过去一个时期内,一直是比较“稀缺”的资源。对操作系统而言,如果存在物理内存不足的情况,通常使用硬盘空间进行弥补,这也就是我们常看到的虚拟内存技术。
Stella981 Stella981
3年前
Netty 中的内存分配浅析
Netty出发点作为一款高性能的RPC框架必然涉及到频繁的内存分配销毁操作,如果是在堆上分配内存空间将会触发频繁的GC,JDK在1.4之后提供的NIO也已经提供了直接直接分配堆外内存空间的能力,但是也仅仅是提供了基本的能力,创建、回收相关的功能和效率都很简陋。基于此,在堆外内存使用方面,Netty自己实现了一套创建、回收堆外内存池的相关功能。基
Wesley13 Wesley13
3年前
Java8内存模型
<divclass"htmledit\_views"<h1<aname"t0"</a一、JVM内存模型</h1<p</p<p<spanstyle"fontfamily:'宋体';"内存空间</span(RuntimeDataArea)中可以按照是否线程共享分为两块,线程共享的是方法区(MethodArea)和堆