1.如何确定对象是个垃圾? 引用计数法:实现简单、效率高,但是如何两个对象同时等于null,他们会相互引用,导致他们的引用计数都不为0,永远不会被回收。 可达性分析法: 2.典型的垃圾收集算法 标记-清楚算法:最基础的垃圾回收算法,有标记阶段和清除阶段;标记阶段的任务是标记处所有需要被回收的对象,清 ...
分类:
编程语言 时间:
2018-04-30 21:08:29
阅读次数:
242
摘要 程序计数器、虚拟机栈、本地方法栈3个区域随线程而生,随线程而灭;栈中的栈帧随着方法的进入和退出而有条不紊地执行者出栈和入栈。每个栈帧中分配多少内存基本上是在类结构确定下来时就已知的(尽管在运行期会由JIT编译器进行一些优化),因此这几个区域的内存分配和回收都具备确定性,在这几个区域内就不需要过 ...
分类:
其他好文 时间:
2018-04-27 12:20:40
阅读次数:
136
每天学习一点点 编程PDF电子书、视频教程免费下载: http://www.shitanlife.com/code ...
分类:
其他好文 时间:
2018-04-12 20:49:19
阅读次数:
167
对于常见的GC算法,我们都应该知道,例如:标记清除算法、复制算法、标记整理算法等。标记清除算法由于回收之后存在大量的内存碎片,存在效率和空间问题!为了解决效率问题,引出了复制算法!熟悉GC算法的小伙伴应该都看过周志明老师的《深入理解Java虚拟机》这本书。因此,这里不再讨论这几种GC算法的区别,这里 ...
分类:
其他好文 时间:
2018-04-07 22:42:28
阅读次数:
192
一、内存布局 1、栈区(stack):由编译器自动分配释放,存放函数的参数值,局部变量值等,其操作方法类似数据结构中的栈。 2、堆区(heap):一般由程序员分配释放,与数据结构中的堆毫无关系,分配方式类似于链表。 3、全局/静态区(static):全局变量和静态变量的存储是放在一起的,在程序编译时 ...
分类:
编程语言 时间:
2018-03-24 00:48:05
阅读次数:
188
C++内存分配方式详解——堆、栈、自由存储区、全局/静态存储区和常量存储区 栈,就是那些由编译器在需要的时候分配,在不需要的时候自动清除的变量的存储区。里面的变量通常是局部变量、函数参数等。在一个进程中,位于用户虚拟地址空间顶部的是用户栈,编译器用它来实现函数的调用。和堆一样,用户栈在程序执行期间可 ...
分类:
编程语言 时间:
2018-03-21 15:07:13
阅读次数:
189
Redis的高效可以说是轻量级的epoll模型和基于内存的读写共同组成的,所以内存的使用就至关重要,本篇主要介绍Redis的内存分配原理。 获取内存信息命令:info memory used_memory: Redis分配器分配的内存总量,就是内部存储的所有数据内存占用量。 used_memory_ ...
分类:
其他好文 时间:
2018-03-07 21:47:57
阅读次数:
2914
阅读目录 开始 整体结构 服务端实现 后台管理 客户端交易 整套期货行情交易软件均由C#.NET平台实现,其中包括行情转发服务端、行情服务端、交易服务端、行情管理后台、交易管理后台以及转发管理后台。行情转发服务端负责实时行情数据的转发,交易服务端负责按规则进行交易逻辑处理,行情转发后台负责合约管理, ...
分类:
其他好文 时间:
2018-03-07 15:07:26
阅读次数:
224
本章主要介绍程序执行过程中操作系统、CPU都干了什么 运行前 程序在运行前,只是在硬盘上待着,此时就是一堆 二进制代码 而已,没有任何作用。 程序只有进入了内存才能运行,但是要进入内存,则需要服从 操作系统 的调度。 一个程序在运行的时候可能需要很大的空间,比如3G,但是操作系统不可能为每个程序都分 ...
分类:
其他好文 时间:
2018-02-19 12:40:41
阅读次数:
221
Linux kernel组织管理物理内存的方式是buddy system(伙伴系统),而物理内存碎片正式buddy system的弱点之一,为了预防以及解决碎片问题,kernel采取了一些实用技术,这里将对这些技术进行总结归纳。 1 低内存时整合碎片 从buddy申请内存页,如果找不到合适的页,则会 ...
分类:
系统相关 时间:
2018-02-13 22:55:36
阅读次数:
243