深入理解运行时数据区 代码示例: 1. JVM 向操作系统申请内存: JVM 第一步就是通过配置参数或者默认配置参数向操作系统申请内存空间,根据内存大小找到具体的内存分配表,然后把内存段的起始地址和终止地址分配给 JVM,接下来 JVM 就进行内部分配。 2. JVM 获得内存空间后,会根据配置参数 ...
分类:
其他好文 时间:
2020-07-22 01:43:22
阅读次数:
61
垃圾收集算法 标记-清除算法:正如他的名字一样,标记-清除算法就是先把需要回收的对象打上标记,表明该对象需要回收了,然后再进行统一的垃圾回收。但是这种算法有两个缺点:1、效率问题,标记和清除的过程效率很低;2、空间问题,标记-清除算法会产生大量的内存随便,可能我们在进行较大内存分配的时候,因为没有合 ...
分类:
编程语言 时间:
2020-07-20 17:18:09
阅读次数:
63
版权声明:源出处:尚硅谷JVM 博客来源于大佬整理 新概念:TLAB(堆当中的线程私有缓存区域) 为什么有TLAB(Thread Local Allocation Buffer) 众所周知堆区是线程共享区域,任何线程都可以访问到堆区中的共享数据。由于对象实例的创建在JVM中非常频繁,因此在并发环境下 ...
分类:
编程语言 时间:
2020-07-17 13:57:11
阅读次数:
65
数组-指针-字符串 数组 数组的定义与初始化 类型符 数组名[常量表达式]; 数组必须先定义,再使用 数组名字是数组首元素的内存地址,是一个常量,不能被赋值 数组可以作为函数的参数:形参会影响实参,一般数组长度也要作为参数传入 对象数组 int a[10]; //定义整形一维数组 int a[2][ ...
分类:
编程语言 时间:
2020-07-16 21:52:35
阅读次数:
68
1.设置过期Key 的 maxmemory-policy 六种方式 redis 中的默认的过期策略是volatile-lru 。设置方式 config set maxmemory-policy volatile-lru maxmemory-policy 六种方式: volatile-lru:只对设置 ...
分类:
其他好文 时间:
2020-07-15 12:49:58
阅读次数:
55
1、关于.NET的内存管理,网上的一些前辈高人写了很多科普文章,基本上所有稍有深度的.NET开发书籍都会做为重中之重来介绍。在此,归纳如下: 1.1 基于性能考虑.NET的内存值内存对象是有栈来管理,而引用对象的内存是由堆来管理的,而大于85000字节的内存对象则是由LOH堆来管理。 1.2 内存是 ...
分类:
数据库 时间:
2020-07-11 22:33:35
阅读次数:
58
Python中的变量 Python中的变量可以看作数值的一个标签,当给变量赋值时,该变量将指向该值域的存储空间,给该变量重新赋一个新值时,将释放当前值域的存储空间,指向另一个值域存储空间。 对于Python来说是以值域为内存分配对象,变量名只是指向该内存空间,当值域发生变化时,系统分配另外一块内存, ...
分类:
编程语言 时间:
2020-07-11 00:02:08
阅读次数:
68
上一篇文章只是简单的描述了一下 Linux 基本概念,通过几个例子来说明 Linux 基本应用程序,然后以 Linux 基本内核构造来结尾。那么本篇文章我们就深入理解一下 Linux 内核来理解 Linux 的基本概念之进程和线程。系统调用是操作系统本身的接口,它对于创建进程和线程,内存分配,共享文 ...
分类:
系统相关 时间:
2020-07-10 09:16:42
阅读次数:
67
二,使用析构函数的有什么用? 一,程序员无法控制何时调用析构函数,因为这是由垃圾回收器决定的。 垃圾回收器检查是否存在应用程序不再使用的对象。 如果垃圾回收器认为某个对象符合析构,则调用析构函数(如果有)并回收用来存储此对象的内存。 程序退出时也会调用析构函数。 二,使用析构函数释放资源 通常,与运 ...
关于JVM,也许你听过这些术语:年轻代(新生代)、老年代、永久代、minor gc(young gc)、major gc、full gc 不要急,先上图,这是jvm 堆内存结构图 仔细的你发现了 图中有些分数8/10和1/10,这是默认配置下各个代内存分配比例。 举个栗子: 假如总heap max分 ...
分类:
其他好文 时间:
2020-07-09 12:00:19
阅读次数:
197