已阅读5页,还剩8页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
径点笔试总结1 ?关于java运行机制Java源码首先转化成中间的字节码文件,扩展名为.class,然后由能够解释java字节码的JVM根据平台的不同解释执行。 JVM是存有各种平台的java字节码解释程序的虚拟机。 Java虚拟机机制屏蔽了底层运行平台的差别,真正实现了“一次编译,随处运行”。 ?Java运行慢的原因(前三个重点)1)java是解释性语言,需要先编译成字节码,然后由JVM解释执行.而C+编译的时候将程序直接编译成本地机器码。 2)java的垃圾回收机制较C+由程序员管理内存效率更低。 3)java中所有的对象都创建在堆中,没有对象被创建在stack中,而C+大部分对象和变量是创建在stack中的。 4)java中的原始数据类型在每个操作系统平台长度都是相同,而C+这些数据类型长度是随操作系统的不同而不同,所以java在不同操作系统上执行时有个转化过程.5)在程序运行过程中,java虚拟机要检测数组是否越界,在C+中则不检测.6)java中采用的是动态链接?内存泄漏内存泄露是指在程序中动态分配了内存,但在程序结束时没有释放这部分内存,从而导致这块内存不能被再次使用,我们说这块内存泄漏了;一般常说的内存泄漏是指堆内存的泄漏。 Java虽然具有GC,但是也存在内存泄漏的情况,其原因主要是一些对象虽然不再被使用,但它们仍然被引用。 相关知识如下(重点理解如何管理内存)关于Java的内存泄漏参考资料.ibm./developerworks/java/l-JavaMemoryLeak/问题的提出Java的一个重要优点就是通过垃圾收集器(Garbage Collection,GC)自动管理内存的回收,程序员不需要通过调用函数来释放内存。 因此,很多程序员认为Java不存在内存泄漏问题,或者认为即使有内存泄漏也不是程序的责任,而是GC或JVM的问题。 其实,这种想法是不正确的,因为Java也存在内存泄露,但它的表现与C+不同。 随着越来越多的服务器程序采用Java技术,例如JSP,Servlet,EJB等,服务器程序往往长期运行。 另外,在很多嵌入式系统中,内存的总量非常有限。 内存泄露问题也就变得十分关键,即使每次运行少量泄漏,长期运行之后,系统也是面临崩溃的危险。 Java是如何管理内存为了判断Java中是否有内存泄露,我们首先必须了解Java是如何管理内存的。 Java的内存管理就是对象的分配和释放问题。 在Java中,程序员需要通过关键字new为每个对象申请内存空间(基本类型除外),所有的对象都在堆(Heap)中分配空间。 另外,对象的释放是由GC决定和执行的。 在Java中,内存的分配是由程序完成的,而内存的释放是有GC完成的,这种收支两条线的方法确实简化了程序员的工作。 但同时,它也加重了JVM的工作。 这也是Java程序运行速度较慢的原因之一。 因为,GC为了能够正确释放对象,GC必须监控每一个对象的运行状态,包括对象的申请、引用、被引用、赋值等,GC都需要进行监控。 监视对象状态是为了更加准确地、及时地释放对象,而释放对象的根本原则就是该对象不再被引用。 为了更好理解GC的工作原理,我们可以将对象考虑为有向图的顶点,将引用关系考虑为图的有向边,有向边从引用者指向被引对象。 另外,每个线程对象可以作为一个图的起始顶点,例如大多程序从main进程开始执行,那么该图就是以main进程顶点开始的一棵根树。 在这个有向图中,根顶点可达的对象都是有效对象,GC将不回收这些对象。 如果某个对象(连通子图)与这个根顶点不可达(注意,该图为有向图),那么我们认为这个(这些)对象不再被引用,可以被GC回收。 以下,我们举一个例子说明如何用有向图表示内存管理。 对于程序的每一个时刻,我们都有一个有向图表示JVM的内存分配情况。 以下右图,就是左边程序运行到第6行的示意图。 Java使用有向图的方式进行内存管理,可以消除引用循环的问题,例如有三个对象,相互引用,只要它们和根进程不可达的,那么GC也是可以回收它们的。 这种方式的优点是管理内存的精度很高,但是效率较低。 另外一种常用的内存管理技术是使用计数器,例如模型采用计数器方式管理构件,它与有向图相比,精度行低(很难处理循环引用的问题),但执行效率很高。 什么是Java中的内存泄露下面,我们就可以描述什么是内存泄漏。 在Java中,内存泄漏就是存在一些被分配的对象,这些对象有下面两个特点,首先,这些对象是可达的,即在有向图中,存在通路可以与其相连;其次,这些对象是无用的,即程序以后不会再使用这些对象。 如果对象满足这两个条件,这些对象就可以判定为Java中的内存泄漏,这些对象不会被GC所回收,然而它却占用内存。 在C+中,内存泄漏的范围更大一些。 有些对象被分配了内存空间,然后却不可达,由于C+中没有GC,这些内存将永远收不回来。 在Java中,这些不可达的对象都由GC负责回收,因此程序员不需要考虑这部分的内存泄露。 通过分析,我们得知,对于C+,程序员需要自己管理边和顶点,而对于Java程序员只需要管理边就可以了(不需要管理顶点的释放)。 通过这种方式,Java提高了编程的效率。 因此,通过以上分析,我们知道在Java中也有内存泄漏,但范围比C+要小一些。 因为Java从语言上保证,任何对象都是可达的,所有的不可达对象都由GC管理。 对于程序员来说,GC基本是透明的,不可见的。 虽然,我们只有几个函数可以访问GC,例如运行GC的函数System.gc(),但是根据Java语言规范定义,该函数不保证JVM的垃圾收集器一定会执行。 因为,不同的JVM实现者可能使用不同的算法管理GC。 通常,GC的线程的优先级别较低。 JVM调用GC的策略也有很多种,有的是内存使用到达一定程度时,GC才开始工作,也有定时执行的,有的是平缓执行GC,有的是中断式执行GC。 但通常来说,我们不需要关心这些。 除非在一些特定的场合,GC的执行影响应用程序的性能,例如对于基于Web的实时系统,如网络游戏等,用户不希望GC突然中断应用程序执行而进行垃圾回收,那么我们需要调整GC的参数,让GC能够通过平缓的方式释放内存,例如将垃圾回收分解为一系列的小步骤执行,Sun提供的HotSpot JVM就支持这一特性。 下面给出了一个简单的内存泄露的例子。 在这个例子中,我们循环申请Object对象,并将所申请的对象放入一个Vector中,如果我们仅仅释放引用本身,那么Vector仍然引用该对象,所以这个对象对GC来说是不可回收的。 因此,如果对象加入到Vector后,还必须从Vector中删除,最简单的方法就是将Vector对象设置为null。 Vector v=new Vector (10);for(int i=1;iB方向的数据传输 3、当B发送完数据时,向A发送一个标志位FIN=1的TCP段,请求关闭 4、主机A向B发送一个标志位ACK=1的TCP段,确认关闭B-A方向的数据传输?线程死锁&举例各并发进程在执行过程中因争夺资源而造成的一种互相等待的情况。 举例线程1P占有资源1S,要求使用资源2S,而2P占有资源2S,要求使用资源1S,它们在获得对方的资源之前都不会释放掉自己占有的资源,故死锁。 ?二进制文件与文本文件的异同参考mbalium.blog.sohu./109408901.html及其它?求同无论是文本文件还是二进制文件的存储在物理上都是二进制的。 ?存异文本文件与二进制文件的区别并不是物理上的,而是逻辑上的;其区别仅仅是编码上不同。 ?文本文件(ASCII文件)是基于字符编码的文件,常见的编码有ASCI I编码,UNICODE编码等。 二进制文件是基于值编码的文件,可以根据具体应用而自定义编码。 ?文本文件编码基于字符定长,译码容易些;二进制文件编码是变长的,所以它灵活,存储利用率要高些,译码难一些?延伸-文本工具打开一个文件的过程是怎样的呢?拿记事本来说,它首先读取文件物理上所对应的二进制比特流(前面已经说了,存储都是二进制的),然后按照你所选择的解码方式来解释这个流,然后将解释结果显示出来。 一般来说,你选取的解码方式会是ASCII码形式(ASCI I码的一个字符是8个比特),接下来,它8个比特8个比特地来解释这个文件流。 例如对于这么一个文件流01000000_01000001_01000010_01000011(下划线_,是我为了增强可读性,而手动添加的),第一个8比特01000000按ASCII码来解码的话,所对应的字符是字符A,同理其它3个8比特可分别解码为BCD,即这个文件流可解释成“ABCD”,然后记事本就将这个“ABCD”显示在屏幕上。 记事本无论打开什么文件都按既定的字符编码工作(如ASCII码),所以当他打开二进制文件时,出现乱码也是很必然的一件事情了,解
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025关于制定建筑工程装修合同范本
- 2025年甘南州辅警招聘考试题库附答案详解(完整版)
- 2025年阿里辅警招聘考试题库及1套完整答案详解
- 2025年银川辅警招聘考试真题及一套参考答案详解
- 2025年阿拉善盟辅警协警招聘考试备考题库完整参考答案详解
- 《2025关于影视作品的版权合同》
- 2025进口买方信贷贷款合同专业版
- 2025年贵阳辅警招聘考试题库附答案详解(培优)
- 2025年雅安辅警招聘考试真题含答案详解(研优卷)
- 2025年石柱县辅警招聘考试真题附答案详解(巩固)
- 第2课卓越的工程
- 机械论文题目(精选参考题目140个),论文题目
- 高级药理学-第三篇-药物代谢动力学总论课件
- (完整版)荷兰进食行为问卷
- GB∕T 17466.1-2019 家用和类似用途固定式电气装置的电器附件安装盒和外壳 第1部分:通用要求
- 电缆保护性拆除方案
- 工程现场踏勘情况记录表(模板)
- 打印机报价单模板(1)
- 竖井风管安装施工方案设计
- 加氢联合装置工艺技术规程(联合装置)
- 社会责任验厂培训
评论
0/150
提交评论