
计算机原理
文章平均质量分 55
BetaCat1
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
内存溢出和内存泄漏的区别
内存溢出 out of memory,是指程序在申请内存时,没有足够的内存空间供其使用,出现out of memory;比如申请了一个integer,但给它存了long才能存下的数,那就是内存溢出。内存泄露 memory leak,是指程序在申请内存后,无法释放已申请的内存空间,一次内存泄露危害可以忽略,但内存泄露堆积后果很严重,无论多少内存,迟早会被占光。memory leak会最终会导致out of memory!内存溢出就是你要求分配的内存超出了系统能给你的,系统不能满足需求,于是产生溢出。内原创 2022-03-14 18:02:39 · 228 阅读 · 0 评论 -
I/O端口与内存地址
外设都是通过读写设备上的寄存器来进行的,外设寄存器也称为"I/O端口",而IO端口有两...转载 2019-09-08 10:00:28 · 2470 阅读 · 2 评论 -
内存碎片产生原因及解决办法
...转载 2019-09-05 18:59:11 · 425 阅读 · 0 评论 -
类的定义和加载
类一旦加载,就会占用内存(否则加载啥),实例化,是将其在堆里面复制了一份(一般是属性),然后返回给用户。根据不同的需求实例化成不同的实例,这就是多态。所以类就是实例的模板。类在实例化之前肯定储存在代码段中只是没有执行而已,就像function一样,这个段在new的时候才能执行并为类中的成员属性在堆中分配空间,方法在堆中只有指针,指针指向代码段的方法定义,就像function只有在调用的时候才会在栈...原创 2019-08-12 22:48:06 · 226 阅读 · 0 评论 -
jvm 堆栈方法区数据存放和操作流程
jvm 堆栈方法区数据存放和操作流程 博客分类: jvm 阅读更多 栈: 1 基础数据类型 byte short int long float double char boolean ...转载 2019-08-12 21:34:23 · 238 阅读 · 0 评论 -
实例化一个对象(类加载)的执行顺序详解
这篇博客将以类加载执行顺序为探索的起点,串讲涉及到的Java相关知识,主要是这个流程中JVN内部运行机制的解析。结论Created...转载 2019-08-12 20:44:33 · 694 阅读 · 0 评论 -
类在实例化之前是否占有内存?
类一旦加载,就会占用内存(否则加载啥),实例化,是将其在堆里面复制了一份(一般是属性),然后返回给用户。根据不同的需求实例化成不同的实例,这就是多态。所以类就是实例的模板。类在实例化之前肯定储存在某一个程序访问不到的段中,这个段在new的时候才能访问到先通俗的分析下,我们把类看作是一个房子。房子里面有家具,桌椅板凳之类的,房子里面还有人。房子里面所有的人都应该是共有一套家具的。也就是说,这些家...原创 2019-08-12 20:43:06 · 2369 阅读 · 4 评论 -
引用和指针的区别
引用,一个变量的别名,为什么引入别名呢?原因是我们想定义一个变量,他共享另一个变量的 内存空间,使用别名无疑是一个好的选择。变量是什么?是一个内存空间的名字,如果我们给这个 内存空间在起另外一个名字,那就是能够共享这个内存了,引用(别名)的由此而来。 指针,指向另一个内存空间的变量,我们可以通过它来索引另一个内存空间的内容,本身有自己的 内存空间。引用与指针的区别 二者区别:...转载 2019-07-02 15:18:09 · 200 阅读 · 0 评论 -
转 堆、栈在内存中的存储位置----详解
1.什么变量在堆内存里存放,什么变量在栈内存里存放引自<http://blog.chinaunix.net/uid-23860671-id-150568.html>一般认为在c中分为这几个存储区 1栈 - 有编译器自动分配释放 2堆 - 一般由程序员分配释放,若程序员不释放,程序结束时可能由OS回收 3全局区(静态区),全局变量和...转载 2019-06-19 19:36:44 · 754 阅读 · 0 评论 -
CS50学习笔记
11:内存中的高地址在下,而低地址在上。栈是由高地址向低地址发展的。缓冲区溢出,是指你给一个变量的数据量超过了它的存储范围,如果数据量过大,那么多余的数据可能直接影响到操作系统的内存地址,这样会造成系统或者程序崩溃。如果不是很大的数据量,但是也超过了范围也会很可怕,因为黑客可以利用函数的特性重新覆盖函数结束后的返回地址,而这些返回地址则是自己写的代码的起始地址。12:电脑在硬盘上存储完文...原创 2019-06-19 19:35:29 · 720 阅读 · 0 评论 -
三大特性:封装,继承,多态
透切理解面向对象三大基本特性是理解面向对象五大基本原则的基础.三大特性是:封装,继承,多态所谓封装:也就是把客观事物封装成抽象的类,并且类可以把自己的数据和方法只让可信的类或者对象操作,对不可信的进行信息隐藏。封装是面向对象的特征之一,是对象和类概念的主要特性。 简单的说,一个类就是一个封装了数据以及操作这些数据的代码的逻辑实体。在一个对象内部,某些代码或某些数据可以是私有的,不能被外界访问...转载 2019-05-23 08:59:20 · 231 阅读 · 0 评论 -
php对象在内存中的分配
内存从逻辑上说大体上是分为4 段,栈空间段、堆空间段、代码段、初始化静态段,程序里面不同的声明 放在不同的内存段里面。数据段(data segment)通常是指用来存放程序中已初始化且不为0的全局变量如:静态变量和常量;代码段(code seg...转载 2019-05-25 13:28:17 · 287 阅读 · 0 评论 -
指针的重要作用总结
指针是C语言中的高级部分,指针、文件的操作是C语言进阶的基石。下面是对指针作用的总结,指针的灵活使用还依赖于日常实战的训练。掌握一定程度之后,可以进军C++,不时复习巩固才是学好的关键。不能停止学习,否则将停滞不前甚至沉没。C语言的重要用途:指针允许你以更简洁的方式引用大的数据结构程序的数据结构从原子级别的数据结构:整型、浮点型、字符型、枚举型,到分子级别的数组、结构体(又称为“记录”),再到数据...转载 2019-05-08 14:36:22 · 657 阅读 · 0 评论 -
递归和内存分配(可视化)
每一次递归调用都将过程(精确地说是“变量”)在内存中复制一遍。一旦一个过程结束(会返回一些数据),这个过程在内存中的副本就被丢弃。递归看似简单,但是可视化跟踪执行过程就很花费时间。好了,让我们来看下面的例子: int Print(int n) //print numbers 1 to n backwards{ if(n == 0) return 0; else ...转载 2019-05-04 12:17:37 · 913 阅读 · 0 评论 -
程序中的内存布局
先看一张示意图:不同代码在可执行程序中的对应关系 程序和进程的不同: 程序是 静态的 概念,表现形式为一个可执行文件 进程是 动态的 概念,程序由操作系统加载运行后得到进程 每个程序可以对应多个进程 每个进程只能...转载 2019-04-27 11:46:06 · 205 阅读 · 0 评论