值类型 引用类型 存储方式 直接存储数据本身 存储的是数据的引用,数据存储在数据堆中 内存分配 分配在栈中的 分配在堆中 效率 效率高,不需要地址转换 效率较低,需要进行地址转换 内存回收 使用完后立即回收 使用完后不立即回收,而是交给GC处理回收 赋值操作 创建一个新对象 创建一个引用 类型扩展 ...
分类:
其他好文 时间:
2019-09-26 16:09:50
阅读次数:
75
概述 本文介绍GC基础原理和理论,GC调优方法思路和方法,基于Hotspot jdk1.8,学习之后将了解如何对生产系统出现的GC问题进行排查解决 阅读时长约30分钟,内容主要如下: GC基础原理,涉及调优目标,GC事件分类、JVM内存分配策略、GC日志分析等 CMS原理及调优 G1原理及调优 GC ...
分类:
其他好文 时间:
2019-09-26 11:50:30
阅读次数:
76
malloc与free是C++/C语言的标准库函数,new/delete是C++的运算符。它们都可用于申请动态内存和释放内存。对于非内部数据类型的对象而言,光用maloc/free无法满足动态对象的要求。对象在创建的同时要自动执行构造函数,对象在消亡之前要自动执行析构函数。由于malloc/free ...
分类:
编程语言 时间:
2019-09-24 14:19:44
阅读次数:
85
理解JVM内存分配策略 三大原则+担保机制 JVM分配内存机制有三大原则和担保机制 具体如下所示: 优先分配到eden区 大对象,直接进入到老年代 长期存活的对象分配到老年代 空间分配担保 对象优先在Eden上分配 如何验证对象优先在Eden上分配呢,我们进行如下实验。 打印内存分配信息 首先代码如 ...
分类:
其他好文 时间:
2019-09-22 02:04:33
阅读次数:
92
java程序在运行时,需要在内存中的分配空间。为了提高运算效率,就对空间进行不同区域的划分,因为每一片区域都有特定的处理数据方式和内存管理方式 栈——存储局部变量,使用完毕,立即回收 堆——存储new出来的东西——实体/对象,每个对象在堆中都有一个地址值,每一个对象数据都有一个默认值,使用完毕后,会 ...
分类:
编程语言 时间:
2019-09-21 17:16:16
阅读次数:
89
集合是专门用于数据存储和检索的类。这些类提供了堆栈,队列,列表,接口和哈希表的支持。大多数集合类实现了相同的接口。 各种集合类和他们的用法 动态数组 它代表了可被单独索引的对象的有序集合 他基本上可以替代一个数组。但是与数组不同的是,可以用索引在指定的位置添加和移除项目,动态数组会自动重新调整他的大 ...
参考资料:GC算法分类-https://zhuanlan.zhihu.com/p/41666328 《深入理解java虚拟机》第三章垃圾收集器与内存分配策略 一:GC分代--新生代跟老年代 gc活动空间为堆区域,堆按gc处理方式也可以分为新生代跟老年代。 对象内存分配跟使用的垃圾收集器有关,默认是在 ...
分类:
编程语言 时间:
2019-09-15 17:08:04
阅读次数:
110
底层:字符串 redis的字符串是一种SDS(simple dynamic string),类似ArrayList,有三个字段(大小、容量、标志位)和一个字符串组成,分配数组的长度和字符串的长度可以不同。 扩容 如果进行append操作数组就要进行扩容,如果字符串很大内存分配和复制开销就会很大。re ...
分类:
其他好文 时间:
2019-09-15 10:44:39
阅读次数:
107
一、克隆的原理与应用 clone在堆上分配内存,分配的内存和源对象(即调用clone方法的对象)相同,然后再使用原对象中对应的各个域,填充新对象的域, 填充完成之后,clone方法返回,一个新的相同的对象被创建,同样可以把这个新对象的引用发布到外部。如果,想要对该对象进行处理,又想保留原来数据进行接 ...
分类:
其他好文 时间:
2019-09-14 16:46:55
阅读次数:
96
C++的内存分配方式 c++内存分配分为堆区,栈区,自由存储区(代码区),全局区(静态区),常量区5部分 堆:堆是操作系统中的术语,是操作系统所维护的一块特殊内存,用于程序的内存动态分配,C语言使用malloc从堆上分配内存,使用free释放已分配的对应内存。 栈:在执行函数时,函数内局部变量的存储 ...
分类:
编程语言 时间:
2019-09-14 15:56:57
阅读次数:
76