什么是内存
内存(Memory)也被称为内存储器和主存储器,其作用是用于暂时存放CPU中的运算数据,以及与硬盘等外部存储器交换的数据。计算机中所有程序的运行都是在内存中进行的,因此内存的性能对计算机的影响非常大。
内存生命周期
无论什么语言,内存周期基本是一致的:
分配你所需要的内存
使用分配到的内存(读、写)
不需要时将其释放\归还
JavaScript的内存分配
值的初始化
varn=123;//给数值变量分配内存
vars="azerty";//给字符串分配内存
varo={
a:1,
b:null
};//给对象及其包含的值分配内存
//给数组及其包含的值分配内存(就像对象一样)
vara=[1,null,"abra"];
functionf(a){
returna+2;
}//给函数(可调用的对象)分配内存
//函数表达式也能分配一个对象
someElement.addEventListener('click',function(){
someElement.style.backgroundColor='blue';
},false);
通过函数调用分配内存
vard=newDate();//分配一个Date对象
vare=document.createElement('div');//分配一个DOM元素
内存使用
使用值的过程实际上是对分配内存进行读取与写入的操作。读取与写入可能是写入一个变量或者一个对象的属性值,甚至传递函数的参数。
内存释放
大多数内存管理的问题都在这个阶段。在这里最艰难的任务是找到“所分配的内存确实已经不再需要了”。它往往要求开发人员来确定在程序中哪一块内存不再需要并且释放它。
垃圾回收
引用计数
这是最简单的垃圾收集器算法。如果没有引用指向这个对象的时候,这个对象就被认为是“可以作为垃圾收集”。
varo={
a:{
b:2
}
};
//两个对象被创建,一个作为另一个的属性被引用,另一个被分配给变量o
//很显然,没有一个可以被垃圾收集
varo2=o;//o2变量是第二个对“这个对象”的引用
o=1;//现在,“这个对象”的原始引用o被o2替换了
varoa=o2.a;//引用“这个对象”的a属性
//现在,“这个对象”有两个引用了,一个是o2,一个是oa
o2="yo";//最初的对象现在已经是零引用了
//他可以被垃圾回收了
//然而它的属性a的对象还在被oa引用,所以还不能回收
oa=null;//a属性的那个对象现在也是零引用了
//它可以被垃圾回收了
循环引用的问题
当遇到循环的时候就会有一个限制。在下面的实例之中,创建两个对象,并且互相引用,因此就会产生一个循环。当函数调用结束之后它们会走出作用域之外,因此它们就没什么用并且可以被释放。但是,基于引用计数的算法认为这两个对象都会被至少引用一次,所以它俩都不会被垃圾收集器收集。
functionf(){
varo={};
varo2={};
o.a=o2;//o引用o2
o2.a=o;//o2引用o
return"azerty";
}
f();
标记清除
JavaScript中最常用的垃圾收集方式是标记清除(mark-and-sweep)。当变量进入环境(例如,在函数中声明一个变量)时,就将这个变量标记为“进入环境”。从逻辑上讲,永远不能释放进入环境的变量所占用的内存,因为只要执行流进入相应的环境,就可能会用到它们。而当变量离开环境时,则将其标记为“离开环境”。这个算法由以下步骤组成:
这个垃圾收集器构建一个“roots”列表。Root是全局变量,被代码中的引用所保存。在JavaScript中,“window”就是这样的作为root的全局变量的例子。
所有的root都会被监测并且被标志成活跃的(比如不是垃圾)。所有的子代也会递归地被监测。所有能够由root访问的一切都不会被认为是垃圾。
2.单标签
<br/>
标签的关系
1.嵌套关系
<head><title></title></head>
2.并列关系
<head></head>
<body></body>
HTML常用标签
1.标题标签
head头部.标题title文档标题
6个等级标签H1~H6
<hn>标题文本</hn>
2.段落标签
<p>文本内容</p>
3.水平标签
<hr/>是单标签
4.换行标签
<br/>
5.divspan标签
divspan是没有语义的
<div>这是头部</div><span>今日价格</span>
6.文本格式标签
标签
显示效果
<b><b/>和<strong><strong/> 文本粗体显示,推荐使用strong
<i><i/>和<em><em/> 文本斜体显示,推荐em
<s><s/>和<del><del> 文本加删除线,推荐del
<u><u/>和<ins><ins/> 文本加下划线,推荐ins
标签的属性
<标签名属性1="属性值1"属性2="属性值2"…>内容</标签名>
1.图像标签img
<imgsrc="图像URL"/>
image
image
2.链接标签
<ahref="跳转目标"target="目标窗口的弹出方式">文本或图像</a>
3.锚点标签
1.使用“ahref=”#id名>“链接文本"</a>创建链接文本(被点击的)
<ahref="#two">
2.使用相应的id名标注跳转目标的位置。
<h3id="two">第2集</h3>
4.base标签打开一个新窗口
base写到<head></head>之间
把所有的连接都默认添加target="_blank"
<head>
<basetarget="_blank">
</head>
5.特殊字符标签
image
6.注释标签
<!--注释语句-->ctrl+/或者ctrl+shift+/
列表标签
1.无序列表ul
各个列表项之间没有顺序级别之分,是并列的
<ul>
<li>列表项1</li>
<li>列表项2</li>
<li>列表项3</li>
......
</ul>
2.有序列表ol
<ol>
<li>列表项1</li>
<li>列表项2</li>
<li>列表项3</li>
......
</ol>
3.自定义列表
定义列表的列表项前没有任何项目符号
<dl>
<dt>名词1</dt>
<dd>名词1解释1</dd>
<dd>名词1解释2</dd>
...
<dt>名词2</dt>
<dd>名词2解释1</dd>
<dd>名词2解释2</dd>
...
</dl>
如果您觉得本文的内容对您的学习有所帮助:
关键字:
html