A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

如何解决这个问题?

7 个回复

倒序浏览
本帖最后由 满兴旺 于 2014-5-7 09:09 编辑

个人感觉,两码事,这就和你每天都吃饭,然后上厕所,但只要你拼命吃,同样会吃撑一个道理
回复 使用道具 举报 1 0
同学你好!在java程序运行过程中,一个垃圾回收器会不定时地被唤起检查是否有不再被使用的对象,并释放它们占用的内存空间。垃圾回收器的启用不由程序员控制,也无规律可循,并不会一产生垃圾,它就会被唤起,甚至有可能到程序终止,它都没有启动的机会。因此这不是一个很可靠的机制,这也许不是件坏事,因为垃圾回收器会给系统资源带来额外的负担。
   至于你说的内存溢出有很多的情况,如果是你在编写代码时不遵循语法规则同样会产生溢出,比如在定义二维数组的时候,你编写的代码中没有及时的设置好数组的上限和下限这样就会引起内存的溢出,所以这两种机制是完全不同,不知道我说的这些你是否能够明白?
回复 使用道具 举报
system类里面有一个gc()方法,运行垃圾回收器,调用这个方法垃圾回收器不一定会执行。
执行java程序,配置文件中有的写着
java –Xms100M –Xmx200M HelloWorld
执行程序所需要的最小内存是100M,最大内存是200M,如果当前系统的内存远大于这个要求,执行垃圾回收没意义,如果执行会占用cpu的,影响效率。只有当系统的内存不满足于这个要求的时候才执行垃圾回收。
所以不能通过写代码来干预垃圾回收,可以通过设置参数。
所以写代码多加一些健壮性的判断,逻辑严谨一点就能避免
回复 使用道具 举报
一路解释的好经典
回复 使用道具 举报
垃圾回收器是不定期的回收的具体的看下这个 挺详细
[url=JAVA_堆内存与栈内存的区别http://bbs.itheima.com/thread-41735-1-1.html]JAVA_堆内存与栈内存的区别[/url]
回复 使用道具 举报
luoyang316 发表于 2014-5-7 21:34
一路解释的好经典

交个朋友
回复 使用道具 举报
lvc 中级黑马 2014-5-7 23:20:01
8#
解释得经典
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马