??xml version="1.0" encoding="utf-8" standalone="yes"?>久久精品一本到99热免费,亚洲国产成人久久精品影视,一本一本久久A久久综合精品
http://www.shnenglu.com/hqh/zh-cn Thu, 08 May 2025 17:45:50 GMT Thu, 08 May 2025 17:45:50 GMT 60 提一个问?/title> http://www.shnenglu.com/hqh/archive/2007/04/18/22242.htmlhqh hqh Wed, 18 Apr 2007 12:41:00 GMT http://www.shnenglu.com/hqh/archive/2007/04/18/22242.html http://www.shnenglu.com/hqh/comments/22242.html http://www.shnenglu.com/hqh/archive/2007/04/18/22242.html#Feedback 2 http://www.shnenglu.com/hqh/comments/commentRss/22242.html http://www.shnenglu.com/hqh/services/trackbacks/22242.html ]]> 内存泄漏的问?/title> http://www.shnenglu.com/hqh/archive/2007/04/07/21447.htmlhqh hqh Sat, 07 Apr 2007 04:53:00 GMT http://www.shnenglu.com/hqh/archive/2007/04/07/21447.html http://www.shnenglu.com/hqh/comments/21447.html http://www.shnenglu.com/hqh/archive/2007/04/07/21447.html#Feedback 0 http://www.shnenglu.com/hqh/comments/commentRss/21447.html http://www.shnenglu.com/hqh/services/trackbacks/21447.html 在别处看到的一个资料,愿与大家分n?br> 内存泄漏的慨?/strong> 1.c/c++是程序员自己理内存QJava内存是由GC自动回收的?br> 我虽然不是很熟悉C++Q不q这个应该没有犯常识性错误吧?br> 2.什么是内存泄露? 内存泄露是指pȝ中存在无法回收的内存Q有时候会造成内存不或系l崩溃?br> 在C/C++中分配了内存不释攄情况是内存泄露?br> 3.Java存在内存泄露 我们必须先承认这个,才可以接着讨论。虽然Java存在内存泄露Q但是基本上不用很关心它Q特别是那些对代码本w就不讲I的更不要d心这个了?br> Java中的内存泄露当然是指Q存在无用但是垃圑֛收器无法回收的对象。而且即有内存泄露问题存在,也不一定会表现出来?br> 4.Java中参数都是传值的?br> 对于基本cdQ大家基本上没有异议Q但是对于引用类型我们也不能有异议?br> Java内存泄露情况 JVM回收法是很复杂的,我也不知道他们怎么实现的,但是我只知道他们要实现的是Q对于没有被引用的对象是可以回收的。所以你要造成内存泄露p做到Q?br> 持有Ҏ用对象的引用! 不要以ؓq个很容易做刎ͼ既然无用Q你怎么q会持有它的引用? 既然你还持有它,它怎么会是无用的呢? 我实在想不到比那个堆栈更l典的例子了,以致于我q要引用别h的例子,下面的例子不是我惛_的,是书上看到的Q当然如果没有在书上看到Q可能过一D|间我自己也想的到Q可是那时我说是我自己想到的也没有h怿的?br>
public class Stack { private Object[] elements=new Object[10]; private int size = 0; public void push(Object e){ ensureCapacity(); elements[size++] = e; } public Object pop(){ if( size == 0) throw new EmptyStackException(); return elements[--size]; } private void ensureCapacity(){ if(elements.length == size){ Object[] oldElements = elements; elements = new Object[2 * elements.length+1]; System.arraycopy(oldElements,0, elements, 0, size); } } }
上面的原理应该很单,假如堆栈加了10个元素,然后全部弹出来,虽然堆栈是空的,没有我们要的东西Q但是这是个对象是无法回收的Q这个才W合了内存泄露的两个条gQ无用,无法回收?br> 但是是存在q样的东西也不一定会D什么样的后果,如果q个堆栈用的比较,也就费了几个K内存而已Q反正我们的内存都上G了,哪里会有什么媄响,再说q个东西很快׃被回收的Q有什么关pR下面看两个例子?br> 例子1
public class Bad{ public static Stack s=Stack(); static{ s.push(new Object()); s.pop(); //q里有一个对象发生内存泄?br> s.push(new Object()); //上面的对象可以被回收了,{于是自愈了 } }
因ؓ是staticQ就一直存在到E序退出,但是我们也可以看到它有自愈功能,是说如果你的Stack最多有100个对象,那么最多也只?00个对象无法被回收其实q个应该很容易理解,Stack内部持有100个引用,最坏的情况是他们都是无用的,因ؓ我们一旦放新的q取Q以前的引用自然消失Q?br> 例子2
public class NotTooBad{ public void doSomething(){ Stack s=new Stack(); s.push(new Object()); //other code s.pop();//q里同样D对象无法回收,内存泄露. }//退出方?s自动无效,s可以被回?Stack内部的引用自然没?所?br> //q里也可以自?而且可以说这个方法不存在内存泄露问题,不过是晚一?br> //交给GC而已,因ؓ它是闭?对外不开?可以说上面的代码99.9999%?br> //情况是不会造成M影响?当然你写q样的代码不会有什么坏的媄?但是 //l对可以说是垃圾代码!没有矛盾?我在里面加一个空的for循环也不会有 //什么太大的影响?你会q么做吗? }
上面两个例子都不q是打闹,但是C/C++中的内存泄露׃是Bad?而是Worst了。他们如果一处没有回收就永远无法回收,频繁的调用这个方法内存不q光了!因ؓJavaq有自愈功能(我自pv的名?q没甌专利),所以Java的内存泄露问题几乎可以忽略了,但是知道的h׃要犯了?br> 不知者无|?Java存在内存泄露,但是也不要夸大其辞。如果你对Java都不是很?你根本就不用兛_q个,我说q你无意中写出内存泄露的例子像你中一千万一h率小,开玩笑?其实应该是小的多的多! 而且即你有q写L代码Q中奖了!基本上都是一包洗粉Q不会让你发财,对系l没有什么大的媄响?br> 杞h忧天的情?/strong> 1.无话可说?br>
Object obj=new Object(); obj=null; //q个完全多此一?因ؓ退Z作用范围Q对象的引用自动消失 //不要在你的程序中出现q样的语句,没有错,但是是不雅?/td>
2.思考不对型
void func(Object o){ o=new Object(); return }
当我们知道Java参数是传|q道上面的Ҏ什么也没错Q就是申请了一个对象然后再丢给GC。因为是传|q里的o是一个调用时候的拯,会不会无法回Ӟ不就是拷贝吗Q退出方法什么都没了Q这个对象怎么会留的住?br> 3.量避免?br>
class A{ B b=new B(this); } class B{ A a; B(A a){this.a=a;} }
]]>h一?/title> http://www.shnenglu.com/hqh/archive/2007/03/30/20975.htmlhqh hqh Fri, 30 Mar 2007 13:19:00 GMT http://www.shnenglu.com/hqh/archive/2007/03/30/20975.html http://www.shnenglu.com/hqh/comments/20975.html http://www.shnenglu.com/hqh/archive/2007/03/30/20975.html#Feedback 0 http://www.shnenglu.com/hqh/comments/commentRss/20975.html http://www.shnenglu.com/hqh/services/trackbacks/20975.html 昨日Q我的一个同学编了一个程序,但运出来,得不到正的l果Q他问我Q我知道那个实有一定的问题Q但是无法解释清楚Q特来请教. Qinclude<stdio.h> void main() { printf("please input two num x and y:"); int a,b,c; scanf("%5d",&a); printf("%d",a); scanf("%4d%4d",&b,&c); printf("%d,%d",b,c); } ׃我也才接触EQ+Q因此我也无法作出正解释,希望有h能帮上忙Q?
]]> 初学C++的感?/title> http://www.shnenglu.com/hqh/archive/2007/03/28/20773.htmlhqh hqh Wed, 28 Mar 2007 07:35:00 GMT http://www.shnenglu.com/hqh/archive/2007/03/28/20773.html http://www.shnenglu.com/hqh/comments/20773.html http://www.shnenglu.com/hqh/archive/2007/03/28/20773.html#Feedback 0 http://www.shnenglu.com/hqh/comments/commentRss/20773.html http://www.shnenglu.com/hqh/services/trackbacks/20773.html 初学C++,只知道一些简单的法,一些简单的语句,但是我正在尽最大的努力学习更多q方面的知识. 真正接触到C++我才知道他的博大_深,要学好他也ƈ非一件容易的?我崇拜那些编E高?我也向往有一天自׃能成Z个编E高? 所以我会加倍努?争取早日实现梦想. ]]>
þ99ȹоƷ |
þþоƷ |
ƷŮþþþ |
þþþһ |
91þþƷ91ɫҲ |
ձƷþþþӰԺձ |
㽶þavһ |
þۺϺݺۺϾþü
|
Ʒһþ㽶߿ |
Ʒþþþþþþ |
ƷŮþAV |
AëƬþþƷ |
ԭۺϾþ |
þþþseɫ͵͵Ʒav |
97rþþƷ99 |
2020þþƷۺһ |
þAVӰ |
ձƷþþþӰԺձ
|
Ʒþˬ |
þ99Ʒþþþ |
Ʒ۲ӰԺþ |
һձȾþۺ |
ݹƷþþþþ |
Ʒtvþþþþþþþ |
þþƷվ |
þþþþAVר |
?VþþƷ
|
þù |
ձɫۺϾþӰԺ |
žžþȻ㽶ͼƬ |
þþwww˳ɾƷ |
ҹƷþþþ9999 |
þ99þëƬһ |
þþƷ91þ鶹
|
ۺɫۺϾþۺ |
ɫۺϾþ۾Ʒ |
ҹþþþþ |
þùҹƵ |
99Ʒ˾þþô߽ |
ƷȾþ |
Ʒþۺ123 |