浅谈JAVA中的垃圾收集机制

时间:2022-08-22 03:58:35

浅谈JAVA中的垃圾收集机制

摘要:JAVA是当前计算机、手机当中常常用的软件程序,JAVA程序的编写受到越来越多的人的关注,本文就JAVA中垃圾收集机制进行深入的探讨,希望对JAVA程序语言的编写有所帮助。

关键词:JAVA;垃圾收集

中图分类号:TP312 文献标识码:A文章编号:1007-9599 (2011) 08-0000-01

Garbage Collection in the JAVA

Liu Jingwei

(Information Engineering College,Dalian University,Liaoning116622,China)

Abstract:JAVA is the current computer,mobile phone software programs which are often used,JAVA program written by more and more people's concern,this article JAVA garbage collection in-depth discussion,hope to write some JAVA programming language help.

Keywords:JAVA;Garbage collection

一、JAVA垃圾收集的启动时间

JAVA中的垃圾收集一直是个问题,在JAVA编程中,如果设置太多机制,会占用原本属于JAVA的空间,对编程造成一定的影响,如果不设置垃圾收集机制,在程序运行过程中,JAVA一定会出现问题,所以,如何巧妙的设定的JAVA中的垃圾收集机制,是当是编程的重要的问题。

想要知道JAVA垃圾收集机制,就必须先了解垃圾收集的启动时间,事实上,大多数的JAVA编程,都采用了模糊概念,也就是有可能启动垃圾收集,什么是有可能,就是在JAVA垃圾收集的启动时间方面,编程员做了一些手脚,只有JAVA程序的垃圾积累到一定程度,或者是到了垃圾触发了某种条件,才有可能激活垃圾收集的启动时间。

那么究竟能不能准确的确定垃圾收集机制何时启动呢,回答是不能确定,因为程序员在编写程序时,也没有办法预知垃圾可时会产生,产生的量是多少,所以,无法强行令垃圾收集机制启动,而垃圾收集机制的启动由虚拟机的内嵌算法来进行调度,程序员无法直接调用它,只有等待垃圾产生触发机制启动。

比如:同样的一个程序,如果想要这个程序正常运行,最大的内存使用量需要在50M以上,在64M内存的系统中运行时.垃圾收集机制可能程序运行后2到3小时,就会启动3次,而且随着程序的运行,启动频率会加快,而在128M的内存的系统中,程序的运行可能都无法触发垃圾收集机制的启动,原因就是在128M内存的系统中运行时内存使用不再紧张。

二、垃圾收集线程管理的内存区域

在Java的编程语言当中,编程员必须注意的是,JAVA的内存分配与其它语言的内存分配是一样的,都是分为代码区、数据区、堆区、栈区四个大区,每一个大区都有自己对应的功能,而垃圾收集程序能够管理的内存区域仅仅局限于堆区中的内存,这是垃圾收集的功能所定,也是垃圾收集的区域大小所定,而代码区、数据区、栈区的内存则不是有垃圾收集线程来管理的在类中声明的静态数据,它的内存分配是在数据区中,因此,静态数据不会被垃圾收集线程收集。

三、内存的溢出和泄漏

在计算机编程当中,编程人员必须注意对内存的使用与释放,由于不合理的使用内存,我们常常在编程过程中,发现内存的溢出与泄漏,导致编程员辛苦编辑的语言在很短的时间内流失,造成大量的人力、资源、金钱损失。

在C语言的编程中,如果在所编程的程序中为某指针分配了固定的内存空间,但是,当这个指针不再具有敏感性与可见性的时候,程序员还没有来得及将这个指针所指向的内存空间进行释放并且有效回收,那么这部分空间的内存空间则被称为认证之窗。

在Java语言中,如果程序没有了指针来进行目标指向,那么,一个对象的存在形式就分成了两个部分:引用和引用指向的内存块。通常引用是在编程函数中声明的,它所占用的内存是在函数的运行中开辟的,因此,它的回收与存在都会倚赖于函数是否在栈中的运行,如果函数运行完毕,对应的甬数运行栈将被清空,那么函数中声明的引用变量所占用的内存空间也将随之被回收。

而内存的溢出,是指在JAVA程序的运行过程当中,由于系统的原因,使得实际存在的物理内存空间的大小比程序需要的内存大小要小很多,而剩余的空间根本不能阻止内存的溢出,所以,只要程序不断的开辟、占用空间,且在操作中,没有足够数量的对象满足被垃圾收集的条件,那么程序将会出现溢出。

四、总结

虽然,随着科技的不断进步,垃圾收集机制也在不断完善,程序员不再直接管理系统的内存问题,有效降低了因错误使用内存而带来的程序崩溃,同时,也降低了内存使用方法的难度,减轻了程序员的压力,但是就垃圾收集机制本身而言,仍然存在着很多问题,等待我们去解决。

从前文我们就一直在讲,程序语言的编程需要空间,而垃圾收集机制只在两种情况下才能够有效运行,一个是系统运行关闭,一个是内存使用紧张。系统运行关闭对于编程而言,没有什么影响,但是存存空间使用紧张,却涉及到JAVA的编程,我们假设内存空间使用不紧张.但有很多的无用对象应该被及时回收,可是系统运行一直处于忙的状态,那么这些本来应该被释放的内存却不会被释放,造成内存空间的浪费,使得程序的编写受到阻碍。

参考文献:

[1]刘玉,张静平.基于JAVA的图书查询设计[J].电脑开发与应用,2011,2

[2]杨怀磊.面向对象的Java语言教学方法[J].价值工程,2011,5

[3]王海涛.链表的Java实现[J].黑龙江科技信息,2011,1

[4]胡景豫.利用JAVA绘制函数曲线[J].黑龙江科技信息,2011,1

[5]邹志合,张英英.数据传输中间件在集团医院信息平台的应用[J].中国数字医学,2011,1

[6]蒋曹清,应时.一种Java程序Chopping方法[J].计算机科学,2011,1

上一篇:浅谈软件项目管理中的需求管理 下一篇:现代电力电子技术的应用及前景分析