Java内存管理分析 Java内存管理分析

Java内存管理分析

  • 期刊名字:硅谷
  • 文件大小:583kb
  • 论文作者:魏远红
  • 作者单位:武汉信息传播职业技术学院
  • 更新时间:2020-09-25
  • 下载次数:
论文简介

信息、SILICON科学Valley ■Java内存管理分析魏远红(武汉信息传播职业技术学院湖北武汉43022)[摘 要]讨论内存泄漏的概念, Java语 言的内存管理机制,垃圾回收器的原理,结合实际代码分析Java语言中可能存在的内存泄漏问题,并列举几种常见的检测及防止上内存灣漏的方法。[关键词]Jave垃圾回收 内存泄漏中圈分类号: TP3 文献标识码; A文章编号: 1671-7597 (200) 0420040-01-.引离在一些被分配的对象,这些对象有下面两个特点,首先,这些对象是可达所谓内存泄漏,是指系统中存在无法回收的内存,有时候会造成内存的,即在有向图中,存在通路可以与其相连:其次,这些对象是无用的,不足或系统崩溃。关于内存泄關问题,对于c/c++来说,这个应该是比较常即程序以后不会再使用这些对象。如果对象满足这两个条件,这些对象就见的问题。对于Java语言,由于Java通过坨圾收集器(Garbage Collecti可以判定为Java中的内存泄漏,这些对象不会敏GC所回收,然而它却占用-On, GC)自动管理内存的回收,程序员不需要通过调用函数来释放内存。内存。在C++中,内存泄漏的范围更大- 些。 有些对象被分配了内存空间,因此,很多程序员认为Java不存在内存泄漏问题,或者认为即使有内存泄然后却不可达,由于C++中没有GC, 这些内存将永远收不回来。在Java中,潮也不是程序的责任,而是CC或JVM的问题。 其实,这种想法是不正确的,这些不可达的对象都由CC负责回收,因此程序员不需要考虑这部分的内存因为Java也存在内存泄露,但它的表现与C++不同。随着越来越多的服务器泄露。通过分析, 我们得知,对于C++,程序员需要自己管理边和顶点,程序采用Java技术,例如JSP, Servlet, EJB等, 服务器程序往往长期运而对于Java程序员只需要管理边就可以了(不需要管理顶点的释放) .通行。另外,在很多嵌入式系统中,内存的总量非常有限。内存泄露问题也过这种方式,Java提高了编程的效率。因此, 通过以上分析,我们知道在就变得十分关键,即使每次运行少量泄漏,长期运行之后, 系统也是面临Java中也有内存泄漏,但范围比C++要小-一些。因为Java从语言上保证,任崩渍的危险。何对象都是可达的,所有的不可达对象都由CC管理。二、Java理!内存的方法三、匐何检测内存泄漏(-) Java垃圾回收器原理最后一个重要的问题,就是如何检测Java的内存泄漏。目前,我们通Java的内存管理就是对象的分配和释放问题。在Java中, 程序负需要常使用一些工具来检查Java程序的内存泄漏问题。市场上已有几种专业检通过关键字new为每个对象申请内存空间(基本类型除外) ,所有的对象查Java内存泄漏的工具,它们的基本T.作瓯理大同小异,都是通过监测都在堆(Heap)中分配空间。另外,对象的释放是由GC决定和执行的。在Java程序运行时,所有对象的申请、释放等动作,将内存管理的所有信息Java中,内存的分配是由程序完成的,而内存的释放是有CC完成的,这种进行统计、分析、可视化.开发人员将根据这些信息判断程序是否有内存收支两条线的方法磅实简化了程序员的工作。但同时,它也加重了JVW的工泄溯问题.这些工具包括Optimizeit Profiler, JProbe Profiler,作。这也是Java程序运行速度较慢的原因之一。因为,GC为了能够正确释JinSight, Rational公司的Purify等.放对象,CC必须监挖每- 一个对象的运行状态,包括对象的申请、引用、被四、结柬语引用、賦值等,GC都衢 要进行监控。综上所述, Java也存在内存泄囂问题。其原因主要是-些对象虽然不监视对象状态是为了更加准确地、及时地释放对象,而释放对象的根再被使用,但它们仍然被引用。为了解决这些问题,我们可以通过软件工本原则就是该对象不再被引用。为了更好理解GC的工作原理,我们可以将具来检查内存泄露,检查的主要原理就是粲露出所有堆中的对象,让程序对象考虑为有向图的顶点,将引用关系考虑为图的有向边,有向边从引用员寻找那些无用但仍被引用的对象。者指向被引对象。另外,每个线程对象可以作为-个图的起始顶点,例如大多程序从main进程开始执行,那么该團就是以main进程项点开始的一棵根树。在这个有向團中,根顶点可达的对象都是有效对象,CC将不回收这些对象。如果某个对象(连通子图)与这个根顶点不可达(注意,该图为参考文献:有向圈),那么我们认为这个(这些)对象不再被引用,可以被CC回收。[1]Bruce Eckel著,侯捷译,Java编程思想, 机械工业出版社, 1999(二)什么是Java中的内存泄露[2]Joshua Bloch著,Effective Java, 中国电力出版社, 2004.下面,我们就可以描述什么是内存泄漏。在Java中, 内存泄漏就是存[3]中国程序员论坛,. csdn. net.(.上接第51页)更为简便和符合现代软件工程。就这一一点而言,Web应用可以看成是传统2004.C/S结构的分布式扩展。对比这两种方式,我们会发现它们会越来越相似,[2]徽软公司著,基于C#的Windors应用程序设计,北京:高等教育出版最后的区别只在于客户端是什么。Web应用与C/S的主要不同只在于Web应用杜, 200的客户端是蒸于浏览器的,而C/S应用的客户端则五花八门,什么都有。它中国煤化工等教育出版社,200们的优缺点也将主要由这一点决定。二北京:清华大学出版社,2008YHCN M H G大学出版社,200铐文献:[7]开发视界论坛,htp:///w st. org cn/bbs.[8]CSON网站,htp://blog. csdn. net.[1]微软公司著,面向. NET的Web应用程序设计,北京:高等教育出版社,[40].

论文截图
版权:如无特殊注明,文章转载自网络,侵权请联系cnmhg168#163.com删除!文件均为网友上传,仅供研究和学习使用,务必24小时内删除。