内存
zl1zl2zl3
这个作者很懒,什么都没留下…
展开
-
玩点深入的:Java 虚拟机内存结构及编码实战
了解JVM内存结构的目的在Java的开发过程中,因为有JVM自动内存管理机制,不再需要像在C、C++开发那样手动释放对象的内存空间,不容易出现内存泄漏和内存溢出的问题。但是,正是由于把内存管理的权利交给了JVM,一旦出现内存泄漏和内存溢出方面的问题,如果不了解JVM是如何使用内存的,不了解JVM的内存结构是什么样子的,就很难找到问题的根源,就更难以解决问题。JVM内存结构简介在JVM所管理的内存中,大致分为以下几个运行时数据区域: 程序计数器:当前线程所执行的字节码的行号指示器。转载 2020-07-24 15:40:43 · 186 阅读 · 0 评论 -
深度好文:Linux 系统内存知识
Linux 内存是后台开发人员,需要深入了解的计算机资源。合理的使用内存,有助于提升机器的性能和稳定性。本文主要介绍Linux 内存组织结构和页面布局,内存碎片产生原因和优化算法,Linux 内核几种内存管理的方法,内存使用场景以及内存使用的那些坑。从内存的原理和结构,到内存的算法优化,再到使用场景,去探寻内存管理的机制和奥秘。一、走进Linux 内存1、内存是什么?1)内存又称主存,是 CPU 能直接寻址的存储空间,由半导体器件制成2)内存的特点是存取速率快2、内存的作用转载 2020-07-24 15:00:00 · 212 阅读 · 0 评论 -
救命,Linux正在吃掉我的内存!
内存发现自己的空闲空间越来越少,经过一番调查,发现罪魁祸首居然是Linux老大!内存:Linux老大,这也没几个程序在运行,可是你为什么老是占用我的内存啊,内存都快被你吃光了!Linux :你的容量那么大,空间闲着也是闲着,我啊,把那些空闲的空间都当成文件缓存了!内存: 你看看你, 把这文件“拆成”了4K的碎片,这儿放一片,那儿放一片,把我的内存空间搞得乱糟糟的。Linux :这叫做Page Cache , 其实一点也不乱,文件在哪一“片”内存中放着,我记得清清楚楚。我这么做也是不...转载 2020-06-15 19:22:50 · 372 阅读 · 0 评论 -
Java堆内存是线程共享的!面试官:你确定吗?
作者 l Hollis来源 l Hollis(ID:hollischuang)Java作为一种面向对象的,跨平台语言,其对象、内存等一直是比较难的知识点,所以,即使是一个Java的初学者,也一定或多或少的对JVM有一些了解。可以说,关于JVM的相关知识,基本是每个Java开发者必学的知识点,也是面试的时候必考的知识点。在JVM的内存结构中,比较常见的两个区域就是堆内存和栈内存(如无...转载 2020-03-10 18:01:23 · 354 阅读 · 0 评论 -
面试被问到“零拷贝”!你真的理解吗?
前言从字面意思理解就是数据不需要来回的拷贝,大大提升了系统的性能;这个词我们也经常在java nio,netty,kafka,RocketMQ等框架中听到,经常作为其提升性能的一大亮点;下面从I/O的几个概念开始,进而在分析零拷贝。I/O概念1.缓冲区缓冲区是所有I/O的基础,I/O讲的无非就是把数据移进或移出缓冲区;进程执行I/O操作,就是向操作系统发出请求,让它要么把缓冲区的数...转载 2020-01-19 16:35:44 · 240 阅读 · 0 评论 -
Java 对象都是在堆上分配内存吗?
为了防止歧义,可以换个说法:Java对象实例和数组元素都是在堆上分配内存的吗?答:不一定。满足特定条件时,它们可以在(虚拟机)栈上分配内存。JVM内存结构很重要,多多复习这和我们平时的理解可能有些不同。虚拟机栈一般是用来存储基本数据类型、引用和返回地址的,怎么可以存储实例数据了呢?这是因为Java JIT(just-in-time)编译器进行的两项优化,分别称作逃逸分析(escape...转载 2019-12-02 10:32:50 · 518 阅读 · 0 评论 -
蚂蚁金服二面:面试官问我零拷贝的实现原理,当场跪。。。
本文来源:占小狼的博客"狼哥,面试又跪了,碰到了知识盲区""哪个?""一面还可以,二面面试官问我零拷贝的原理,懵逼了...这块内容没去研究过""哦,这个知识点,我之前应该有讲过,你没注意到?""这东西工作中用不到,可能被我忽略了""啧啧啧...""哎,有空和我讲讲?""先从简单开始,实现下这个场景:从一个文件中读出数据并将数据传到另一台服务器上?""为啥写这...转载 2019-11-29 09:06:50 · 1102 阅读 · 0 评论 -
原子变量、锁、内存屏障,写得非常好!
突然想聊聊这个话题,是因为知乎上的一个问题多次出现在了我的Timeline里:请问,多个线程可以读一个变量,只有一个线程可以对这个变量进行写,到底要不要加锁?可惜的是很多高票答案语焉不详,甚至有所错漏。所以我想在这篇文章里斗胆聊聊这个水挺深的问题。受限于个人水平,文章若有错漏,还望读者不吝赐教。首先约定,由于CPU的架构和设计浩如烟海,本文站在工程师的角度,只谈IA32/AMD64(x86-6...转载 2019-10-25 14:14:27 · 1770 阅读 · 2 评论 -
记一次内存泄漏问题的排查经历
源宝导读:随着系统越来越庞大,越来越复杂,疑难杂症问题也越来越多。本文将介绍明源研发协同平台团队针对一次内存泄露问题的排查过程和技术探索。一、背景 内存泄漏,一个说大不大说下不小的瑕疵。作为开发者,我们都很清楚内存泄漏是我们代码问题导致的。但是话说回来,泄漏后果会很严重嘛?这不好说,如果对服务器内存的影响只有几个百分点,又或者对应用没有什么致命影响,那么修补内存泄漏就像鸡肋一样,...转载 2019-10-23 17:17:00 · 759 阅读 · 1 评论 -
一次 Java 内存泄漏排查过程,学习学习
人人都会犯错,但一些错误是如此的荒谬,我想不通怎么会有人犯这种错误。更没想到的是,这种事竟发生在了我们身上。当然,这种东西只有事后才能发现真相。接下来,我将讲述一系列最近在我们一个应用上犯过的这种错误。最有意思的是,一开始的迹象揭示的问题,与实际发生的问题完全不同。在一个凄凉的午夜午夜刚过,我就被一条来自监控系统的警报吵醒了。Adventory,我们的 PPC (以点击次数收费)广告系统中...转载 2019-07-03 09:17:01 · 337 阅读 · 1 评论 -
面试官上来就问:Java 进程中有哪些组件会占用内存?
本文的内容来自 StackOverflow 的一个问答:Java using much more memory than heap size (or size correctly Docker memory limit)有网友留言,今天去参加面试,面试官上来就问:你能解释为什么 Java 进程占用内存远超过堆内存大小?如何正确计算 Docker 内存限制?有没有办法减少 Java 进程的堆...转载 2019-06-07 18:19:20 · 516 阅读 · 0 评论 -
JVM 与 Linux 的内存关系详解
来源:美团技术团队在一些物理内存为8g的服务器上,主要运行一个Java服务,系统内存分配如下:Java服务的JVM堆大小设置为6g,一个监控进程占用大约 600m,Linux自身使用大约800m。从表面上,物理内存应该是足够使用的;但实际运行的情况是,会发生大量使用SWAP(说明物理内存不够使用 了),如下图所示。由于SWAP和GC同时发生会致使JVM严重卡顿,所以我们要追问:内存...转载 2019-06-06 13:37:47 · 489 阅读 · 0 评论 -
一个Java对象到底占用多大内存?
最近在调研MAT和VisualVM源码实现,遇到一个可疑问题,两者计算出来的对象大小不一致,才有了这样疑惑。一个Java对象到底占用多大内存?为了复现这个问题,准备了4个最简单类:class AAAAA {}class BBBBB { int a = 1;}class CCCCC { long a = 1L;}class DDDDD { ...转载 2019-05-21 10:17:47 · 558 阅读 · 0 评论 -
你真的理解零拷贝吗?
出处:https://juejin.im/post/5cad6f1ef265da039f0ef5df前言从字面意思理解就是数据不需要来回的拷贝,大大提升了系统的性能;这个词我们也经常在java nio,netty,kafka,RocketMQ等框架中听到,经常作为其提升性能的一大亮点;下面从I/O的几个概念开始,进而在分析零拷贝。I/O概念1.缓冲区缓冲区是所有I/O的基础...转载 2019-04-18 15:15:49 · 1532 阅读 · 0 评论 -
生产环境JVM内存溢出案例分析
如果我们所在公司的业务量比较大,在生产环境经常会出现JVM内存溢出的现象,那我们该如何快速响应,快速定位,快速恢复问题呢?本文将通过一个线上环境JVM内存溢出的案例向大家介绍一下处理思路与分析方法。案例:架构组接到某项目组反馈,Zabbix监控上显示JMX不可用,请求协助处理。分析思路: JMX不可用,往往是由于垃圾回收时间停顿时间过长、内存溢出等问题引起的。 线上故障...转载 2019-04-07 15:52:00 · 544 阅读 · 0 评论 -
我是一条内存
我从无边无尽的黑暗中慢慢醒来,迷迷糊糊,茫然四顾。耳边传来了风扇卖力干活的嗡嗡声,估计就是他把我吵醒的。 这时候CPU阿甘现身了:“兄弟,快醒醒,开机了,要干活了,我要把程序和数据从硬盘读取到你这里来了!”“放到我这里干嘛?”“唉,一断电,你什么都忘了,不把程序读入内存,我怎么执行啊?”奥,对了,我是内存啊,阿甘是我的好基友,虽然说程序都在硬盘上存着,但是阿甘被设计成只能运行我...转载 2019-03-26 10:18:21 · 265 阅读 · 0 评论 -
一文探讨堆外内存的监控与回收
引子记得那时一个风和日丽的周末,太阳红彤彤,花儿五颜六色,96 年的普哥微信找到我,描述了一个诡异的线上问题:线上程序使用了 NIO FileChannel 的 堆内内存作为缓冲区,读写文件,逻辑可以说相当简单,但根据监控却发现堆外内存飙升,导致了 OutOfMemeory 的异常。由这个线上问题,引出了这篇文章的主题,主要包括:FileChannel 源码分析,堆外内存监控,堆外内存回收...转载 2019-03-15 21:42:41 · 1356 阅读 · 1 评论 -
小心踩雷,一次Java内存泄漏排查实战
前些日子小组内安排值班,轮流看顾我们的服务,主要做一些报警邮件处理、Bug 排查、运营 issue 处理的事。工作日还好,无论干什么都要上班的,若是轮到周末,那这一天算是毁了。不知道是公司网络广了就这样还是网络运维组不给力,网络总有问题,不是这边交换机脱网了,就是那边路由器坏了,还偶发地各种超时,而我们灵敏的服务探测服务总能准确地抓住偶现的小问题,给美好的工作加点料。好几次值班组的...转载 2019-02-20 18:51:36 · 1525 阅读 · 1 评论 -
深入探索并发编程之内存屏障:资源控制操作
当你使用资源控制时, 那么你肯定在试图理解内存执行顺序。不管你是用C,C++还是其它语言,这都是在编写无锁(lock-free)代码时需要重点考虑的。在上一篇文章中,我们介绍了编译期间的内存乱序,这一部分内容构成内存执行顺序问题的一部分。这篇文章讲述另一部分:处理器本身在运行期间的内存执行顺序。与编译器乱序一样,处理器乱序对于单线程来说也是不可见的。只有在使用无锁(lock-free)技术时-...转载 2016-12-16 15:19:09 · 2079 阅读 · 0 评论 -
Java对象大小内幕浅析
最近突发奇想,忽然对Java对象的内存大小感兴趣,去网上搜集了一些资料,并且做一下整理,希望能够各位帮助。 如果:你能算出new String(“abc”)这个对象在JVM中占用内存大小(64位JDK7中压缩大小48B,未压缩大小64B), 那么看到这里就可以结束了~ Java对象的内存布局:对象头(Header),实例数据(Instance Data)和对齐填充(Padding)。 ...转载 2017-02-09 14:23:34 · 333 阅读 · 0 评论 -
Java 运行时的内存划分
Java 运行时的内存划分程序计数器记录当前线程所执行的字节码行号,用于获取下一条执行的字节码。当多线程运行时,每个线程切换后需要知道上一次所运行的状态、位置。由此也可以看出程序计数器是每个线程私有的。虚拟机栈虚拟机栈由一个一个的栈帧组成,栈帧是在每一个方法调用时产生的。每一个栈帧由局部变量区、操作数栈等组成。每创建一个栈帧压栈,当一个方法执行完毕之后则出栈。如果...转载 2018-08-30 08:58:24 · 301 阅读 · 0 评论 -
《深入理解 Java 内存模型》读书笔记(下)(干货,万字长文)
0. 前提 1. 基础 2. 重排序 3. 顺序一致性 4. Volatile 5. 锁 6. final 7. 总结 4. Volatile4.1 VOLATILE 特性举个例子:public class VolatileTest { volatile long a = 1L; /...转载 2018-10-16 10:54:59 · 278 阅读 · 0 评论 -
《深入理解 Java 内存模型》读书笔记(上)(干货,万字长文)
目录 0. 前提 1. 基础 1.1 并发编程的模型分类 1.1.1 通信 1.1.2 同步 1.2 JAVA 内存模型的抽象 2. 重排序 2.1 处理器重排序 2.2 内存屏障指令 2.3 HAPPENS-BEFORE 2.4 数据依赖性 2.5 AS-IF-SERIAL 语义 2.6 重排序对多线程的影响 3. 顺序一致性 3....转载 2018-10-16 10:37:44 · 825 阅读 · 0 评论 -
JVM 监控以及内存分析
Java 语言,开发者不能直接控制程序运行内存,对象的创建都是由类加载器一步步解析,执行与生成与内存区域中的;并且 jvm 有自己的垃圾回收器对内存区域管理、回收;但是我们已经可以通过一些工具来在程序运行时查看对应的 jvm 内存使用情况,帮助更好的分析与优化我们的代码。查看系统里 java 进程信息// 查看当前机器上所有运行的java进程名称与pid(进程编号)jps -l/...转载 2018-10-26 09:44:04 · 871 阅读 · 0 评论 -
深度历险:Redis 内存模型详解
Redis 是目前最火爆的内存数据库之一,通过在内存中读写数据,大大提高了读写速度,可以说 Redis 是实现网站高并发不可或缺的一部分。我们使用 Redis 时,会接触 Redis 的 5 种对象类型(字符串、哈希、列表、集合、有序集合),丰富的类型是 Redis 相对于 Memcached 等的一大优势。在了解 Redis 的 5 种对象类型的用法和特点的基础上,进一步了解 Redis...转载 2018-11-03 09:18:16 · 222 阅读 · 0 评论 -
你应该知道的 volatile 关键字
前言不管是在面试还是实际开发中 volatile 都是一个应该掌握的技能。首先来看看为什么会出现这个关键字。 内存可见性由于 Java 内存模型( JMM)规定,所有的变量都存放在主内存中,而每个线程都有着自己的工作内存(高速缓存)。线程在工作时,需要将主内存中的数据拷贝到工作内存中。这样对数据的任何操作都是基于工作内存(效率提高),并且不能直接操作主内存以及其他线程工作内...转载 2018-11-14 08:43:58 · 198 阅读 · 0 评论 -
深入浅出 Java 中 JVM 内存管理
Java岗位面试,JVM是对程序员基本功考察,通常会问你对JVM了解吗? 可以分几部分回答这个问题,首先JVM内存划分 | JVM垃圾回收的含义 | 有哪些GC算法 以及年轻代和老年代各自特点等等。 1) JVM内存划分:① 方法区 (线程共享) 常量 静态变量 JIT(即时编译器)编译后代码也在方法区存放② 堆内存 (线程共享) 垃圾回收的主要...转载 2018-11-13 10:25:01 · 243 阅读 · 0 评论 -
JVM内存占用情况深入分析,分分钟解开你的疑惑
很多同学都问过这个问题,为什么我的Xmx设置4g,但是TOP命令查询RES却占用5G,6G,甚至10G。这个正常吗?也可以说正常,也可以说不正常,怎么判断?笔者今天就要为你解答这个问题,叫你如何分析JVM占用的内存都分配到了哪里,哪些地方合理,哪些地方异常。内存分布首先,列举一下一个JVM进程主要占用内存的一些地方:Young Old metaspace java threa...转载 2018-11-26 11:16:26 · 5434 阅读 · 0 评论 -
Linux内存映射mmap原理分析
来自:Joe James链接:https://blog.csdn.net/joejames/article/details/37958017一直都对内存映射文件这个概念很模糊,不知道它和虚拟内存有什么区别,而且映射这个词也很让人迷茫,今天终于搞清楚了。。。下面,我先解释一下我对映射这个词的理解,再区分一下几个容易混淆的概念,之后,什么是内存映射就很明朗了。原理首先,“映射”这个...转载 2018-12-21 14:39:13 · 312 阅读 · 0 评论 -
没错,老板让我写个 BUG!
前言标题没有看错,真的是让我写个 bug!刚接到这个需求时我内心没有丝毫波澜,甚至还有点激动。这可是我特长啊;终于可以光明正大的写 bug 了转载 2018-12-25 09:02:00 · 2290 阅读 · 8 评论 -
简述Linux虚拟内存管理
原文地址:https://cloud.tencent.com/ developer/article/1157420虚拟存储虚拟存储(virtual memory, VM)的基本思想是: 维护一个虚拟的逻辑内存机制(通常比物理内存大得多), 进程都基于这个虚拟内存, 在进程运行时动态的将虚拟内存地址映射到实际的物理内存.VM的设计体现了软件工程思想: 封装, 抽象, 依赖倒置, 非常...转载 2019-01-01 14:01:48 · 3526 阅读 · 0 评论 -
哪个更快:Java 堆还是本地内存
使用Java的一个好处就是你可以不用亲自来管理内存的分配和释放。当你用new关键字来实例化一个对象时,它所需的内存会自动的在Java堆中分配。堆会被垃圾回收器进行管理,并且它会在对象超出作用域时进行内存回收。但是在JVM中有一个‘后门’可以让你访问不在堆中的本地内存(native memory)。在这篇文章中,我会给你演示一个对象是怎样以连续的字节码的方式在内存中进行存储,并且告诉你是应该怎样存...转载 2019-02-20 13:45:47 · 861 阅读 · 1 评论 -
每个程序员都应该了解的内存知识
原文地址:http://www.oschina.net/translate/what-every-programmer-should-know-about-memory-part1?from=20130303转载 2014-05-17 11:21:52 · 665 阅读 · 0 评论