前言 大半个月前我参与了字节后端面试,未通过第四面,面试总结写在了这篇文章: https://juejin.cn/post/7132712873351970823 在此文的末尾,我写到为了全面回顾Go的知识点,我开始阅读《The Go Programing Language》,这是我接触Go以来第一次阅读英文书籍。并且希望将学习的笔记其整理成册
遍地都是月光,可月亮只有一个 1.对象的实例化 创建对象的方式 new:最常见的方式、单例类中调用getInstance的静态方法、XXXFactory的静态方法。 Class的newInstance方法:反射的方式,在JDK9里面被标记为过时的方法,因为只能调用空参构造器,并且权限必须为public。 Constructor的
16、JMM 什么是JMM JMM : Java内存模型,不存在的东西,概念!约定! 关于JMM的同步约定: 1、线程解锁前,必须把共享变量立刻刷回主存 2、线程加锁前,必须读取主存中的最新值到工作内存中! 3、加锁和解锁是同一把锁 线程 :工作内存、主内存 JMM规定了内存主要划分为主内存和工
介绍下Java内存区域(运行时数据区) Java 虚拟机在执行 Java 程序的过程中会把它管理的内存划分成若干个不同的数据区域。JDK 1.8 和之前的版本略有不同。 下图是 JDK 1.8 对JVM做的改动,把方法区的具体实现----元空间已到了本地内存中。 各线程共享的:堆、方法区(元空间)、直接内存; 各
内核的缘由 计算机是由各种外部硬件设备组成的,比如内存、cpu、硬盘等,如果每个应用都要和这些硬件设备对接通信协议,那这样太累了,所以这个中间人就由内核来负责,让内核作为应用连接硬件设备的桥梁,应用程序只需关心与内核交互,不用关心硬件的细节。 现代操作系统,内核一般会提供 4 个基
CPU 的高速缓存,通常可以分为 L1、L2、L3 这样的三层高速缓存,也称为一级缓存、二级缓存、三级缓存。 在 Linux 系统,我们可以通过这条命令,查看 CPU 里的 L1 Cache 「数据」缓存的容量大小: $ cat /sys/devices/system/cpu/cpu0/cache/index0/size 32K 内存用的芯片和 CPU Cache 有所
最近碰到一个问题,就是使用Biamap绘图的时候,为了防止闪烁,使用了双缓存绘制的方式,但是会碰到内存急剧增加的情况,而且在XP的工控机和Win10的机器上运行结果不一样,在Win10 上运行的时候,内存增加的不是很明显,而在XP机子上运行一段时间,就会直接自动退出,我怀疑是XP工控机内存没有及时的释
目录11.3.1 System.gc()的理解11.3.2 内存溢出与内存泄漏内存溢出(OOM)内存泄漏(Memory Leak)11.3.3 Stop The World11.3.4 垃圾回收的并行与并发并发(Concurrent)并行(Parallel)并发 VS 并行11.3.5 安全点与安全区域安全点(Safepoint)安全区域(Safe Region)引用概述11.3.6 强引用-不回收11.3.
1 概述 2 JVM与Java体系与结构 2.1 字节码 我们平时说的java字节码,指的是用java语言编译成的字节码。准确的说任何能在jvm平台上执行的字节码格式都是一样的。所以应该统称为:jvm字节码。 不同的编译器,可以编译出相同的字节码文件,字节码文件也可以在不同的JVM上运行。 Java虚拟
3.1内存中字的存储 内存单元是字节单元(即一个单元存一个字节) 一个字用两个地址连续的单元存放,低位字节存在低地址,高位字节存在高地址 字单元:存放一个字型数据(16位)的内存单元,由两个地址连续内存单元组成 将起始地址为N的字单元简称为N地址字单元 3.2DS和[address]
闭包就是可以读取其它函数内部的变量; 函数嵌套,内层函数使用了外层函数的变量;闭包=内层函数 + 外层函数的变量; 优点:函数可以操作函数内部的变量,延长变量的的作用范围,延长变量的生命周期; 生命周期:创建内存---使用内存---释放内存; 缺点:内存容易造成内存泄漏,解决方法:不适用的时候手动
现在我们介绍避免死锁的几个常见方法。 ❑ 避免一个线程同时获取多个锁。 ❑ 避免一个线程在锁内同时占用多个资源,尽量保证每个锁只占用一个资源。 ❑ 尝试使用定时锁,使用lock.tryLock(timeout)来替代使用内部锁机制。 ❑ 对于数据库锁,加锁和解锁必须在一个数据库连接里,否则会出
1.synchronized 锁的升级过程: 由于并发量不同,争抢的激烈程度不同出现锁的升级。 锁升级不可逆。 2.为什么要使用锁。 对共有资源的操作,因为对同一资源涉及多数据的复制,使用,回写等不能保证资源的原子性。 即围绕共有资源的原子性和有序性,可见性。
“ 学习资料:rust in action[1] 1. Rust 安装 curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh source"$HOME/.cargo/env" 2. hello world 创建 hello 项目 mkdir rust_tmp && cd rust_tmp cargo new hello cd hello cargo run 看
1.redis 过期策略: 1.定时过期 2.惰性过期 3.定期过期 2.redis内存淘汰策略: 全局的键空间选择性移除 noeviction:当内存不足以容纳新写入数据时,新写入操作会报错。 allkeys-lru:当内存不足以容纳新写入数据时,在键空间中,移除最近最少使用的key。(这个是最常
一、mmap 概述 mmap是memory map(内存映射)的缩写,其为一种内存映射文件的方法,即将一个文件或者其它对象映射到进程的地址空间,实现文件磁盘地址和程序虚拟地址空间具有一种虚拟对应关系。mmap()系统调用使得进程之间通过映射同一个普通文件实现共享内存,普通文件被映射到进程地址空间
free -m 查看可用的内存不多了,swap是0,考虑在根目录建立交换文件 cd / sudo dd if=/dev/zero of=/swapfile bs=1k count=4096000 swapfile为文件名称,任意指定,大小为物理内存的两倍4g,依自己服务器来设置 mkswap /swapfile swapon /swapfile 建立并启用交换,再用内存查看命令查
sizeof的特点:printf(”%d“,int);printf(”%d“,float);printf(”%d“,double);其结果为4 4 4这就是面试的时候问你,指针在内存中占多少个字节?这就是个问题不是简单的2,4,甚至8个字节回答:指针在内存中所在的字节数是由系统的寻址能力决定的,寻址能力就是CPU对于该数据范围处理的极限能力,理论上32位
allocator类 群友之前问了一个问题,C++除了new和malloc还有什么分配内存的方法,当时我在想mmap()、brk()这些系统调用,后来突然想到STL里面有一个allocator类似乎也是做空间分配的。现在来学一学。 new/delete的局限性 抽象的描述new的行为:将内存分配和对象构造组合在一起。也就是ope
ps ps -aux (a 显示现行终端机下的所有程序,包括其他用户的程序。 u 以用户为主的格式来显示程序状况。 x 显示所有程序,不以终端机来区分。) netstat netstat -napt (-a 显示所有连接和侦听端口,默认不显示LISTEN相关; -n 以数字形式显示地址和端口号。 -p proto
更新语句(增删改)的执行,基本流程和查询一致,也要经过连接器、分析器、优化器、执行器等功能模块,区别就在于拿到符合条件的数据之后的操作。 执行器先通过存储引擎获取需要修改的数据。如果该数据所在的数据页本来就在内存中,就直接返回给执行器;否则,需要先从磁盘读入内存,然后再返回
月亮正亮得起劲,若此刻不想你倒显得我不解风情 1.堆的核心概述 1.1 认识堆内存 堆与进程、线程 一个进程对应一个JVM实例 一个JVM实例对应一个堆空间 进程包含多个线程,所以线程之间共享同一个堆空间 对堆的认识 一个JVM实例只存在一个堆内存,堆也是Java内存管理的核心
为什么Volatile不能保证原子性 public class VolatileAtomThread extends Thread { private static volatile int count; public static void main(String[] args) { ArrayList<Thread> threads = new ArrayList<>(); for (int i = 0; i < 10;
字节序(大、小端存储)是指字节存储在内存中的顺序。 内存通常是字节可寻址的,但大多数计算机体系结构都适用于 32 位大小或字大小(4 字节)的操作数。 因此,要将一个字存储到字节可寻址存储器中,有两种方法: (1)将字的最高有效字节存储在较小的地址中。这种类型的存储是指 Big Endian 格式。
nohup java -jar -Dspring.profiles.active=test -Xms512M -Xmx2048M -XX:PermSize=512M -XX:MaxPermSize=1024M /data/home/app/XXX.jar >/dev/null 2>&1 & 说明:Xms:堆内存初始大小Xmx:堆内存最大值PermSize:永久内存初始大小MaxPermSize:永久内存最大值堆内存和永久内存区