java程序一运行就出现内存泄漏和内存溢出 请问该怎么处理 急急急急急急!!!!!!!!!

Java内存管理机制
在C++ 语言中,如果需要动态分配一块内存,程序员需要负责这块内存的整个生命周期。从申请分配、到使用、再到最后的释放。这样的过程非常灵活,但是却十分繁琐,程序员很容易由于疏忽而忘记释放内存,从而导致内存的泄露。 Java 语言对内存管理做了自己的优化,这就是垃圾回收机制。 Java 的几乎所有内存对象都是在堆内存上分配(基本数据类型除外),然后由 GC ( garbage
collection)负责自动回收不再使用的内存。
上面是Java 内存管理机制的基本情况。但是如果仅仅理解到这里,我们在实际的项目开发中仍然会遇到内存泄漏的问题。也许有人表示怀疑,既然 Java 的垃圾回收机制能够自动的回收内存,怎么还会出现内存泄漏的情况呢?这个问题,我们需要知道 GC 在什么时候回收内存对象,什么样的内存对象会被 GC 认为是“不再使用”的。
Java中对内存对象的访问,使用的是引用的方式。在 Java 代码中我们维护一个内存对象的引用变量,通过这个引用变量的值,我们可以访问到对应的内存地址中的内存对象空间。在 Java 程序中,这个引用变量本身既可以存放堆内存中,又可以放在代码栈的内存中(与基本数据类型相同)。 GC 线程会从代码栈中的引用变量开始跟踪,从而判定哪些内存是正在使用的。如果 GC 线程通过这种方式,无法跟踪到某一块堆内存,那么 GC 就认为这块内存将不再使用了(因为代码中已经无法访问这块内存了)。
通过这种有向图的内存管理方式,当一个内存对象失去了所有的引用之后,GC 就可以将其回收。反过来说,如果这个对象还存在引用,那么它将不会被 GC 回收,哪怕是 Java 虚拟机抛出 OutOfMemoryError 。
Java内存泄露
一般来说内存泄漏有两种情况。一种情况如在C/C++ 语言中的,在堆中的分配的内存,在没有将其释放掉的时候,就将所有能访问这块内存的方式都删掉(如指针重新赋值);另一种情况则是在内存对象明明已经不需要的时候,还仍然保留着这块内存和它的访问方式(引用)。第一种情况,在 Java 中已经由于垃圾回收机制的引入,得到了很好的解决。所以, Java 中的内存泄漏,主要指的是第二种情况。
可能光说概念太抽象了,大家可以看一下这样的例子:
Vector v = new
Vector( 10 );
i = 1 ;i & 100 ; i ++ ){
Object o = new
在这个例子中,代码栈中存在Vector 对象的引用 v 和 Object 对象的引用 o 。在 For 循环中,我们不断的生成新的对象,然后将其添加到 Vector 对象中,之后将 o 引用置空。问题是当 o 引用被置空后,如果发生 GC,我们创建的 Object 对象是否能够被 GC 回收呢?答案是否定的。因为, GC 在跟踪代码栈中的引用时,会发现 v 引用,而继续往下跟踪,就会发现 v 引用指向的内存空间中又存在指向 Object 对象的引用。也就是说尽管o 引用已经被置空,但是 Object 对象仍然存在其他的引用,是可以被访问到的,所以 GC 无法将其释放掉。如果在此循环之后, Object 对象对程序已经没有任何作用,那么我们就认为此 Java 程序发生了内存泄漏。
尽管对于C/C++ 中的内存泄露情况来说, Java 内存泄露导致的破坏性小,除了少数情况会出现程序崩溃的情况外,大多数情况下程序仍然能正常运行。但是,在移动设备对于内存和 CPU 都有较严格的限制的情况下,Java 的内存溢出会导致程序效率低下、占用大量不需要的内存等问题。这将导致整个机器性能变差,严重的也会引起抛出 OutOfMemoryError ,导致程序崩溃。
一般情况下内存泄漏的避免
在不涉及复杂数据结构的一般情况下,Java 的内存泄露表现为一个内存对象的生命周期超出了程序需要它的时间长度。我们有时也将其称为“对象游离”。
FileSearch{
FileSearch(File file){
hasString(String str){
getFileSize(mFile);
byte [size];
loadFile(mFile, content);
String(content);
s.contains(str);
在这段代码中,FileSearch 类中有一个函数 hasString ,用来判断文档中是否含有指定的字符串。流程是先将mFile 加载到内存中,然后进行判断。但是,这里的问题是,将 content 声明为了实例变量,而不是本地变量。于是,在此函数返回之后,内存中仍然存在整个文件的数据。而很明显,这些数据我们后续是不再需要的,这就造成了内存的无故浪费。
要避免这种情况下的内存泄露,要求我们以C/C++ 的内存管理思维来管理自己分配的内存。第一,是在声明对象引用之前,明确内存对象的有效作用域。在一个函数内有效的内存对象,应该声明为 local 变量,与类实例生命周期相同的要声明为实例变量……以此类推。第二,在内存对象不再需要时,记得手动将其引用置空。
复杂数据结构中的内存泄露问题
在 实际的项目中,我们经常用到一些较为复杂的数据结构用于缓存程序运行过程中需要的数据信息。有时,由于数据结构过于复杂,或者我们存在一些特殊的需求(例 如,在内存允许的情况下,尽可能多的缓存信息来提高程序的运行速度等情况),我们很难对数据结构中数据的生命周期作出明确的界定。这个时候,我们可以使用Java 中一种特殊的机制来达到防止内存泄露的目的。
之前我们介绍过,Java 的 GC 机制是建立在跟踪内存的引用机制上的。而在此之前,我们所使用的引用都只是定义一个“ O ”这样形式的。事实上,这只是 Java 引用机制中的一种默认情况,除此之外,还有其他的一些引用方式。通过使用这些特殊的引用机制,配合 GC 机制,就可以达到一些我们需要的效果。
Java中的几种引用方式
Java中有几种不同的引用方式,它们分别是:强引用、软引用、弱引用和虚引用。下面,我们首先详细地了解下这几种引用方式的意义。
在此之前我们介绍的内容中所使用的引用 都是强引用,这是使用最普遍的引用。如果一个对象具有强引用,那就类似于必不可少的生活用品,垃圾回收器绝不会回收它。当内存空 间不足,Java 虚拟机宁愿抛出OutOfMemoryError 错误,使程序异常终止,也不会靠随意回收具有强引用的对象来解决内存不足问题。
软引用(SoftReference )
SoftReference 类的一个典型用途就是用于内存敏感的高速缓存。 SoftReference
的原理是:在保持对对象的引用时保证在
报告内存不足情况之前将清除所有的软引用。关键之处在于,垃圾收集器在运行时可能会(也可能不会)释放软可及对象。对象是否被释放取决于垃圾收集器的算法 以及垃圾收集器运行时可用的内存数量。
弱引用(WeakReference )
WeakReference 类的一个典型用途就是规范化映射( canonicalized mapping )。另外,对于那些生存期相对较长而且重新创建的开销也不高的对象来说,弱引用也比较有用。关键之处在于,垃圾收集器运行时如果碰到了弱可及对象,将释放
WeakReference
引用的对象。然而,请注意,垃圾收集器可能要运行多次才能找到并释放弱可及对象。
虚引用(PhantomReference )
PhantomReference 类只能用于跟踪对被引用对象即将进行的收集。同样,它还能用于执行
pre-mortem
清除操作。PhantomReference
ReferenceQueue
类一起使用。需要
ReferenceQueue
是因为它能够充当通知机制。当垃圾收集器确定了某个对象是虚可及对象时, PhantomReference
对象就被放在它的
ReferenceQueue
上。将 PhantomReference
ReferenceQueue
上也就是一个通知,表明
PhantomReference
对象引用的对象已经结束,可供收集了。这使您能够刚好在对象占用的内存被回收之前采取行动。 Reference与 ReferenceQueue 的配合使用。
GC、 Reference 与 ReferenceQueue 的交互
GC无法删除存在强引用的对象的内存。
GC发现一个只有软引用的对象内存,那么:
SoftReference对象的 referent
域被设置为 null ,从而使该对象不再引用 heap 对象。
SoftReference引用过的 heap 对象被声明为 finalizable 。
finalize()
方法被运行而且该对象占用的内存被释放, SoftReference
对象就被添加到它的 ReferenceQueue (如果后者存在的话)。
GC发现一个只有弱引用的对象内存,那么:
WeakReference对象的 referent 域被设置为 null , 从而使该对象不再引用heap 对象。
WeakReference引用过的 heap 对象被声明为 finalizable 。
当heap 对象的 finalize() 方法被运行而且该对象占用的内存被释放时, WeakReference 对象就被添加到它的ReferenceQueue (如果后者存在的话)。
GC发现一个只有虚引用的对象内存,那么:
PhantomReference引用过的 heap 对象被声明为 finalizable 。
PhantomReference在堆对象被释放之前就被添加到它的 ReferenceQueue 。
值得注意的地方有以下几点:
1、 GC 在一般情况下不会发现软引用的内存对象,只有在内存明显不足的时候才会发现并释放软引用对象的内存。
2、 GC 对弱引用的发现和释放也不是立即的,有时需要重复几次 GC ,才会发现并释放弱引用的内存对象。
3、软引用和弱引用在添加到 ReferenceQueue 的时候,其指向真实内存的引用已经被置为空了,相关的内存也已经被释放掉了。而虚引用在添加到 ReferenceQueue 的时候,内存还没有释放,仍然可以对其进行访问。
通过以上的介绍,相信您对Java 的引用机制以及几种引用方式的异同已经有了一定了解。光是概念,可能过于抽象,下面我们通过一个例子来演示如何在代码中使用 Reference 机制。
String str
String( & hello & );
ReferenceQueue & String &
ReferenceQueue & String & ();
WeakReference & String &
WeakReference & String & (str, rq);
// ④取消&hello&对象的强引用
String str1 = wf.get();
// ⑤假如&hello&对象没有被回收,str1引用&hello&对象
// 假如&hello&对象没有被回收,rq.poll()返回null
Reference &?
ref = rq.poll();
在以上代码中,注意⑤⑥两处地方。假如“hello ”对象没有被回收 wf.get() 将返回“ hello ”字符串对象,rq.poll() 返回 null ;而加入“ hello ”对象已经被回收了,那么 wf.get() 返回 null , rq.poll() 返回 Reference对象,但是此 Reference 对象中已经没有 str 对象的引用了 ( PhantomReference 则与WeakReference 、SoftReference 不同 )。
引用机制与复杂数据结构的联合应用
了解了GC 机制、引用机制,并配合上 ReferenceQueue ,我们就可以实现一些防止内存溢出的复杂数据类型。
例如,SoftReference 具有构建 Cache 系统的特质,因此我们可以结合哈希表实现一个简单的缓存系统。这样既能保证能够尽可能多的缓存信息,又可以保证 Java 虚拟机不会因为内存泄露而抛出 OutOfMemoryError 。这种缓存机制特别适合于内存对象生命周期长,且生成内存对象的耗时比较长的情况,例如缓存列表封面图片等。对于一些生命周期较长,但是生成内存对象开销不大的情况,使用WeakReference 能够达到更好的内存管理的效果。
附SoftHashmap 的源码一份,相信看过之后,大家会对 Reference 机制的应用有更深入的理解。
com. *** .
// : SoftHashMap.java
java.util. * ;
java.lang.ref. * ;
android.util.L
SoftHashMap
AbstractMap
The internal HashMap that will hold the SoftReference.
HashMap();
The number of &hard& references to hold internally.
HARD_SIZE;
The FIFO list of hard references, order of last access.
LinkedList hardCache
LinkedList();
Reference queue for cleared SoftReference objects.
ReferenceQueue queue
ReferenceQueue();
// Strong Reference number
SoftHashMap()
this ( 100 ); }
SoftHashMap( int
{ HARD_SIZE
Object get(Object key)
Object result
We get the SoftReference represented by that key
SoftReference soft_ref
(SoftReference)hash.get(key);
From the SoftReference we get the value, which can be
null if it was not in the map, or it was removed in
the processQueue() method defined below
soft_ref.get();
If the value has been garbage collected, remove the
entry from the HashMap.
hash.remove(key);
We now add this object to the beginning of the hard
reference queue.
One reference can occur more than
once, because lookups of the FIFO queue are slow, so
we don&t want to search through it each time to remove
duplicates.
// keep recent use object in memory
hardCache.addFirst(result);
(hardCache.size()
HARD_SIZE)
Remove the last entry if list longer than HARD_SIZE
hardCache.removeLast();
We define our own subclass of SoftReference which contains
not only the value but also the key to make it easier to find
the entry in the HashMap after it&s been garbage collected.
SoftReference
always make data member final
Did you know that an outer class can access private data
members and methods of an inner class?
I didn&t know that!
I thought it was only the inner class who could access the
outer class&s private information.
An outer class can also
access private members of an inner class inside its inner
SoftValue(Object k, Object key, ReferenceQueue q)
super (k, q);
Here we go through the ReferenceQueue and remove garbage
collected SoftValue objects from the HashMap by looking them
up using the SoftValue.key data member.
processQueue()
(SoftValue)queue.poll())
if (sv.get() ==
Log.e( & processQueue & ,
& null & );
Log.e( & processQueue & ,
& Not null & );
hash.remove(sv.key);
we can access private data!
Log.e( & SoftHashMap & ,
Here we put the key, value pair into the HashMap using
a SoftValue object.
Object put(Object key, Object value)
processQueue();
throw out garbage collected values first
Log.e( & SoftHashMap & ,
& put into
hash.put(key,
SoftValue(value, key, queue));
Object remove(Object key)
processQueue();
throw out garbage collected values first
hash.remove(key);
hardCache.clear();
processQueue();
throw out garbage collected values
hash.clear();
processQueue();
throw out garbage collected values first
hash.size();
Set entrySet()
no, no, you may NOT do that!!! GRRR
UnsupportedOperationException();
相关 [java 内存 理解] 推荐:
- InfoQ cn
锁的释放-获取建立的happens before 关系. 锁是java并发编程中最重要的同步机制. 锁除了让临界区互斥执行外,还可以让释放锁的线程向获取同一个锁的线程发送消息. 深度剖析WebKit渲染机制:Chromium项目Committer确认QCon北京2013. QCon北京自动化运维专题:腾讯海量SNS社区网站高效运维探索.
- Java - 编程语言 - ITeye博客
/blog/1188328. Java内存管理机制. 在C++ 语言中,如果需要动态分配一块内存,程序员需要负责这块内存的整个生命周期. 从申请分配、到使用、再到最后的释放. 这样的过程非常灵活,但是却十分繁琐,程序员很容易由于疏忽而忘记释放内存,从而导致内存的泄露.
- 极客521 | 极客521
本文详细地介绍了Java内存管理的原理,以及内存泄露产生的原因,同时提供了一些列解决Java内存泄露的方案,希望对各位Java开发者有所帮助. 在C++ 语言中,如果需要动态分配一块内存,程序员需要负责这块内存的整个生命周期. 从申请分配、到使用、再到最后的释放. 这样的过程非常灵活,但是却十分繁琐,程序员很容易由于疏忽而忘记释放内存,从而导致内存的泄露.
- ITeye博客
堆(Heap)又被称为:优先队列(Priority Queue),是计算机科学中一类特殊的数据结构的统称. 堆通常是一个可以被看做一棵树的数组对象. 在队列中,调度程序反复提取队列中第一个作业并运行,因而实际情况中某些时间较短的任务将等待很长时间才能结束,或者某些不短小,但具有重要性的作业,同样应当具有优先权.
- Java - 编程语言 - ITeye博客
(问题一:什么叫垃圾回收机制. ) 垃圾回收是一种动态存储管理技术,它自动地释放不再被程序引用的对象,按照特定的垃圾收集算法来实现资源自动回收的功能. 当一个对象不再被引用的时候,内存回收它占领的空间,以便空间被后来的新对象使用,以免造成内存泄露. (问题二:java的垃圾回收有什么特点. ) JAVA语言不允许程序员直接控制内存空间的使用.
- ITeye博客
JAVA的垃圾回收机制,让许多程序员觉得内存管理不是很重要,但是内存内存泄露的事情恰恰这样的疏忽而发生,特别是对于Android开发,内存管理更为重要,养成良好的习惯,有利于避免内存的泄漏..
这里可以把许多对象和引用看成是有向图,顶点可以是对象也可以是引用,引用关系就是有向边.
- ITeye博客
昨天中午,发了一篇
equals和==区别的博文,晚上再看时有几位大牛指出了其中的一些错误,很感谢他们的留言,一句简简单单的留言给了我对这些错误知识点改正的机会. 或许这就是从事互联网行业所提倡的互帮互助的精神吧,因为有分享,有交流,互联网才会发展的如此迅猛. 大牛提的一个观点很好,好的东西可以拿出来分享,错的东西却可能带给别人错误的理解,这一点我确实得向看了我写了一些bug博客的人道个歉.
- 码蜂笔记
JMM,Java Memory Model,Java 内存模型. 什么是内存模型,要他何用. 假定一个线程为变量var赋值:
var = 3;,内存模型要回答的问题是:在什么条件下,读取变量var的线程可以看到
3这个值. 如果缺少了同步,线程可能无法看到其他线程操作的结果. 导致这种情况的原因可以有:编译器生成指令的次序可以不同于源代码的“显然”版本,编译器还会把变量存储在寄存器而不是内存中;处理器可以乱序或并行执行指令;缓存会改变写入提交到主存得到变量的次序;存储在处理器本地缓存中的变量对其他处理器不可见 等等.
- ImportNew
你可以在网上找到一大堆资料让你了解JMM是什么东西,但大多在你看完后仍然会有很多疑问. happen-before是怎么工作的呢. 用volatile会导致缓存的丢弃吗. 为什么我们从一开始就需要内存模型. 通过这篇文章,读者可以学习到足以回答以上所有问题的知识. 它包含两大部分:第一部分是硬件层次的大体架构,第二部分是深入OpenJdk源代码和实现.
- Java译站
Java有垃圾回收,因此不会出现内存泄露. 尽管Java的确有垃圾回收器来回收那些不用的内存块,但你不要指望它能够点铁成金. GC减轻了开发人员肩上的负担,而原本的那些工作非常容易出错,不过并不是所有内存分配的问题它都能够解决. 更糟糕的是,Java的设计允许它可以欺骗GC,使得它能够保留一些程序已经不再使用的内存.
坚持分享优质有趣的原创文章,并保留作者信息和版权声明,任何问题请联系:@。线程挂起后怎么出现内存泄漏?
[问题点数:20分,结帖人yjukh]
线程挂起后怎么出现内存泄漏?
[问题点数:20分,结帖人yjukh]
不显示删除回复
显示所有回复
显示星级回复
显示得分回复
只显示楼主
2005年6月 VC/MFC大版内专家分月排行榜第一
本帖子已过去太久远了,不再提供回复功能。有关java程序内存泄漏的问题_百度知道
有关java程序内存泄漏的问题
getString(R,} catch (MalformedURLException e) {Log.getResponseCode() == HttpURLConnection.toString()).setRequestProperty(&;}vcHttpConn.printStackTrace();.disconnect();VlinCam&}public void run() {try {URL vcUrl = new URL(getBaseContext();URLConnection vcConn = url.setImageBitmap(vcBitmap);e;.toString())! 代码如下;.camera_ip));VlinCam&.getResources();}return vcB}}).sleep(100L);** * 视频直播 *
* @param image */}&#47.format(&quot.printStackTrace().printStackTrace().encodeToString(vcCredential, Base64;;if (vcHttpC} catch (Exception e) {Log:
public Bitmap LoadBitmapFromNetwork(URL url) {Bitmap vcBitmap =e;public class VlinCamLive implements Runnable {private ImageView vcImage.decodeStream(vcInStream);e;} catch (Exception e) {LBasic %s&quot.v(&VlinCam&}Tif (vcBitmap .v(&quot.v(&public VlinCamLive(ImageView image) {vcImage =vcBitmap = BitmapF.v(&quot,从JPG转换成Bitmap放到安卓的imageView里;HttpURLConnection vcHttpConn = (HttpURLConnection) vcConn.printStackTrace();admin, e.toString());vcCvcInStream.DEFAULT);e;UTF-8&quot.HTTP_OK) {InputStream vcInStream = vcHttpConn!= null) {vcImage:admin&quot.getBytes(&quot.while (true) {final Bitmap vcBitmap = LoadBitmapFromNetwork(vcUrl).printStackTrace(), vcEncode));String vcEncode = Base64,.toString()););try {String vcCredential = &quot.toString()).openConnection();}} catch (InterruptedException e) {Log,String。望网求大神指教.post(new Runnable() {public void run() {vcImage.close(),} catch (IOException e) {Log, e.v(&Authorization&VlinCam&e我们的线程每200ms从网络摄像头获取一张图片.getInputStream()。每个循环BitmapFactory会创建新的内存 garbageCollection( )来不及回收 就造成程序死掉;VlinCam&quot
提问者采纳
这是赤裸裸的100毫秒用线程池.sleep(100L)Thread,设定固定线程数
提问者评价
其他类似问题
为您推荐:
内存泄漏的相关知识
其他3条回答
求错误提示~
可以让等待的时间长点,等被回收
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁查看: 1289|回复: 0
大工14春《Java程序设计》在线作业答案
14春《Java程序设计》在线作业1
试卷总分:100& &测试时间:--- P5 n4 {7 y# A
一、单选题(共10道试题,共50分。)
1.执行16%3的结果是()。
A. 非法7 [, I0 J4 X1 v6 \* J
B. 3# \3 b+ i. U; K2 p6 Z
2.构成Java程序的基本要素是()。' |- S/ K& C9 |
D. 指令代码# G8 l0 Y" _% G) @9 a* ~
满分:5分) [% m( b$ K' }% d' @&&`
3.将源文件转化为机器指令的方式是()。
A. 编译方式% Q: U" F7 ~5 r, `6 u! E6 R
B. 解译方式3 |# D5 K* |! G$ w8 ?2 B+ ?
C. 解码方式6 }7 d! H. F&&[&&M0 p# q
D. 编辑方式- C3 _# d5 N) F. H3 ]: ]6 E
4.下面不是面向对象技术特点的是()。
A. 模块化5 D( J- q" x8 X' L7 i
C. 继承性/ @0 A3 w5 h0 J) m# c/ ^7 z$ ?/ U1 x
D. 多态" C/ h$ M&&k# x7 G
满分:5分, N( p- [# I/ ?, J
5.不是Java关键字的是()。1 A& `5 n# a- T) D2 M
B. byte" \% E: h' P+ j
满分:5分. L) W* I3 V0 `5 L
6.Java中管理类的一个机制是()。
A. 包- b) P. `+ h+ c) ?# E
B. 语言5 {/ d% p& s) v! T9 t+ W
C. 模块- H- }' b8 j8 k) o, ]7 C
D. 变量) ^&&^; Y* p# V# `$ Q
满分:5分4 _: K- J1 C. ~
7.下面概念中,不属于面向对象方法的是()。
A. 对象2 r8 G" j" W3 B- |- |
B. 继承: V8 y/ m) d) H
C. 类" E+ J8 J' v4 J& t( W
D. 过程调用# p" n&&V; t7 c6 M4 i
满分:5分; u9 D1 D% B/ a2 k- d( I5 Y* I
8.下列不属于Java提供的运算符的是()。" v/ k1 M+ C% C9 V6 b4 Y
A. 算术运算符
B. 逻辑运算符
C. 关系运算符8 F# m8 l/ u7 ?1 h/ k
D. 整数运算符
9.Java语言有多种实现机制,下列()技术属于垃圾回收机制。; [( Z1 i5 |/ X7 ]+ L8 i
A. 字节编译# g&&W* A$ x1 }4 H8 Y5 _
B. 内存跟踪
C. 语法检查1 i/ b5 w0 S" U3 q0 j/ i
D. 堆栈上/下溢检查
10.下面不是Java语言特点的是()。
B. 面向对象
C. 编辑型& X, n% G0 b5 |% x6 I* l) H
二、判断题(共10道试题,共50分。)" u* Q6 u! x0 t& g
1./*……*/中可以嵌套//注释,也能嵌套/*……*/注释。
A. 错误&&L' e# e/ Y- j6 q0 A+ h6 j* o
满分:5分( m- Q. w$ r% K3 s3 i0 |+ r9 w+ T
2.利用equals()方法判定Date类时,判断的是对象的值而不是对象的地址。
3.Java语言的标识符必须由字母、下划线(_)或美元符($)开始,其余字符可以是上述3种字符或数字(0~9)。
A. 错误; e& h% `& M/ C/ R: k
4.对于运行时异常,程序中一般可不做处理,由Java虚拟机自动进行处理。# }3 Z# M6 H( T0 Y/ y
A. 错误+ l- M) w2 S- s
满分:5分&&S( v% t7 D# x1 w) d
5.Java程序分为Java应用程序和Java小程序两类。
A. 错误$ f, f0 t- E- L. J
B. 正确2 _1 x- \$ m! B4 S1 J( s5 u4 Q
6.对于Application,主线程是main()方法执行的线索;对于Applet,主线程是浏览器加载并执行Java小程序。
B. 正确; B&&h1 \. x* W5 T4 r# w! Y) p1 t
满分:5分' T) q4 d) `+ s&&J4 y
7.3&=3的结果为true;3&=3的结果也为true,而不是false。
A. 错误4 |$ o+ M, p2 D0 b, S- [
B. 正确7 f# f- k0 K6 y+ y1 x
8.Java 2平台分为3个体系J2SE、J2EE、J2ME。6 T: c4 }! Y8 q# ?/ M! W4 l- `
满分:5分3 ~# w/ ]5 E* T
9.break语句终止当前这一轮循环,跳到下一轮循环并执行。3 I" n, A8 d1 n. f0 _- A
A. 错误7 m# @6 F( a+ x
10.Java语言中的布尔型boolean只有两个取值,即true和false,且不能和其他任何类型转换。
A. 错误&&~) s$ U9 l0 B
B. 正确3 C! O7 K: i# `, J. Y. |
大工14春《Java程序设计》在线作业2&&p, o1 M; r! m$ H
试卷总分:100& &测试时间:--
一、单选题(共10道试题,共50分。)
1.当方法被调用时如果方法有参数,参数必须要()。
A. 实例化1 {; B5 b) }+ i: ^&&S3 q- B
B. 解析化; ?+ v8 S: o! V
C. 传递+ ^0 p: M: ~. F0 ~
D. 释放&&]&&n; s$ G% W
2.创建一个对象的操作中,没有下面的()。
A. 释放内存$ u8 W6 D5 H' T+ f' @&&c
B. 对象声明
C. 分配内存& k0 r1 u+ U' D# U' d
D. 调用构造方法6 ^& F" {& |- Z" b) t. t$ Z
3.final关键字不能修饰的参数是()。1 t&&x1 R/ e% i$ n
A. 类! y( `8 Q' `8 s0 `
C. 变量% o- u) i5 j% @- C
4.按运算符操作数的数目划分,运算符?:的类型是()。
A. 三元, r# T- v" [4 y. ^& i
B. 二元+ h1 N$ h1 v! f# u2 T
满分:5分* ?- ^9 |1 F+ Q7 x
5.下列陈述正确的是()。
A. 不需定义类,就能创建对象
B. 属性可以是简单变量,也可以是一个对象
C. 属性必须是简单变量2 x/ Y' W1 B! Z
D. 对象中必有属性和方法
满分:5分- g&&e' f" M+ q0 l7 [
6.在Java中,由Java编译器自动导入,而无需在程序中用import导入的包是()。
A. java.applet9 ?9 g8 i7 T/ w. Q
B. java.awt
C. java.util
D. java.lang
7.属于main方法的返回值类型是()。
8.在编写异常处理的Java程序中,每个catch语句块都应该与()语句块对应,使得用该语句块来启动Java的异常处理机制。
A. if-else
B. switch+ O3 W. ^0 L* V
C. try% d1 ]2 b& d9 V& l1 \6 k
9.Java异常处理涉及的关键字,以下哪个不是()。
B. final6 J* G) N; h0 o! m, s- c
10.方法定义和常量值的集合是()。
A. 单元3 K; S! K5 c! o" A; C
C. 成员" w0 }1 \$ D8 d( x# z: T
二、判断题(共10道试题,共50分。)* P6 U; I: d. R% r) B: G
1.在Java语言中属性前不加任何访问控制修饰符则表示只允许同一包中的类访问。# I/ |/ Y# c! @: e9 u$ i+ d, e
B. 正确: ^/ B# |& g+ m- P% l2 A1 s
2.在Java语言中声明数组时,无论用何种方式定义数组,都要指定其长度。+ D& ~- b) h9 b4 c4 L
B. 正确9 H" I. V. F" A; E
满分:5分) N8 R% ]' |; g6 t
3.Java中,一个类重载的构造函数之间的相互调用可以直接使用构造函数名调用。( t# ^, k: W. V. ?' y* V. a
满分:5分8 D" n' L% v' q: a5 Y6 ~3 S
4.String类对象创建之后可以再修改和变动。
5.当系统调用当前类的构造方法时,若没有this()语句进行重载调用,也没有super()语句调用父类构造方法,则直接执行构造方法中的其他语句。
6.friendly关键字是Java语言的访问控制修饰符。
B. 正确. ^; N$ v8 ?* y# Y4 Y
满分:5分& z- y# R& V& z6 ~( [
7.Java源程序是由类定义组成的,每个程序可以定义若干个类,但只有一个类是主类。0 o3 P/ F3 ?9 {3 F
A. 错误5 q8 \$ @! Z1 ]&&w
8.子类可以重写一个父类的构造方法。
A. 错误2 J/ N/ n2 F&&d6 x, H1 S) n( m
B. 正确! K8 _6 D, U4 ^. i" W
满分:5分( [5 Z" A% H& c( f! O/ T' x
9.垃圾收集的过程在Java程序的生存期中是自动的,不需要分配和释放内存,也避免了内存泄漏。/ u1 b6 L! L: P* G# P1 t: f- s
B. 正确; f1 i3 c&&`2 G3 [8 X
满分:5分; t* H7 b9 e& p2 j
10.构造函数与类名同名,没有返回值类型,功能用来初始化一个类的具体对象。
大工14春《Java程序设计》在线作业3
试卷总分:100& &测试时间:--
一、单选题(共10道试题,共50分。)/ x+ W, g( q, y5 ]
1.若有定义String s=&I am a good cat&;则s.indexOf(&a&,7)的值为()。
B. 136 f8 i6 x4 n2 P" {, |- o
2.处理日期的类在Java的哪个包中()。
A. java.util' o3 i1 o8 @& {0 y) K# f
B. jav.io2 F7 i$ @9 K( B& @! A, p: {
C. java.lang
D. java.net6 W' @: F# o+ m% D
满分:5分+ l* S" w6 A# ?
3.接口中方法默认是()类型。
A. private
B. protected
C. public2 e2 b1 k& m) N5 g6 r&&k% Z
D. package
满分:5分) }7 N! t! U' {
4.this关键字的含义是表示一个()。: ~2 k: Q4 @, e9 x2 r( K
B. 当前对象&&]( J' _) D" W( n6 i8 h
D. 一个方法. E; }- t' V" t. b2 N
5.类定义代码被置于其他类定义中的类是()。4 h4 R7 a$ _&&H$ }# S: I
B. 内部类( p$ p$ y1 x, P* E7 ~
D. 抽象类+ P3 p9 s7 g- d3 K% O
6.JPanel默认的布局管理器是()。
A. FlowLayout( N1 d9 r! X( Y2 |9 x
B. CardLayout9 N5 L" Q+ d6 U. j6 x4 m, g0 e% @. `9 z
C. BorderLayout
D. GridLayout
满分:5分+ d2 x: B4 a& Y' H: R
7.以下哪个是处理可变字符串的类()。
B. StringBuffer&&X) g/ d# s9 J0 M$ m1 I' K
D. Math) n' ~+ ~) I9 A! K6 `: p
8.Java使用()关键字来定义一个接口。
A. implements5 g3 G2 B! [5 |0 Z, n# p% b
B. class0 C, w0 u- P+ A&&p&&O: P3 e
C. extends5 |&&Q' G1 e$ w: h3 }4 O: U&&l8 K8 Z
D. interface* ?$ D; j7 Q% T1 H& }$ O& W
9.构造方法是一种特殊的方法,它的名字必须与()相同,而且不返回任何数据类型。
A. 类名% P4 {' N+ H5 G' ?# {
满分:5分; J) O- @&&L, M1 Z
10.一个类的构造方法被自动调用的时机是()。
A. 定义类时% P; f( Y/ S) X- y3 }3 f
B. 使用对象的属性时8 U% z- g2 V- X$ F- d
C. 使用对象的方法时& Y% }/ K: {0 a+ P
D. 一个类的实例对象刚产生时$ I$ `4 L+ N* l9 z
二、判断题(共10道试题,共50分。)
1.类加载器加载程序运行所需要的所有类,它通过区分本机文件系统的类和网络系统导入的类增加安全性。1 O3 o$ \9 ]! _9 S; `* [5 ^4 @" N
满分:5分7 n7 \" v7 U! E" o
2.this语句须是构造函数中的第一个可执行语句。
满分:5分' p5 }3 A+ X' c) w# G
3.用final修饰的方法既不能被覆盖,也不能被重载,它是一个最终方法,其方法的定义永远不能改变。. N+ u/ B9 i&&O8 D2 d! s
满分:5分; F! t) o2 e/ b3 }; a1 @& Q
4.在一个抽象类中不能定义构造方法。
满分:5分) N' d3 \& n8 y6 @6 h
5.抽象类实现接口后,必须实现接口中的抽象方法。
B. 正确0 L) ?: g% W&&C
6.在构造方法中如调用super()语句,则必须使其成为构造方法中的第一条语句。1 n- F8 m9 v! S7 _! k
B. 正确- b. \) x( x5 C
满分:5分&&q+ d( u" C' m6 {; L& j$ {
7.final修饰的方法一定要存在于final类中。
B. 正确" n$ y9 n9 V+ B- ]: n7 p) F. `, Q
满分:5分& G# i( C4 [! c% @, n
8.Java中类和接口都只能单继承。
9.接口中的方法均为抽象的和公共的,既有方法头,也有方法体。
A. 错误4 J5 }- K3 i# f' i8 D2 L
B. 正确& Z, ~. U; E0 S4 T7 \
10.super()和this()调用语句可以同时在一个构造函数中出现。
A. 错误" _' n9 h* f0 t3 W
满分:5分3 z- t' x6 x+ a' N& @9 O/ d
( u! ^& L) F0 X( `; G
本帖子中包含更多资源
才可以下载或查看,没有帐号?
帖子的最近访客
帖子永久地址:&<button type="submit" class="pn" onclick="setCopy('大工14春《Java程序设计》在线作业答案\n/thread-.html', '帖子地址已经复制到剪贴板您可以用快捷键 Ctrl + V 粘贴到 QQ、MSN 里。')">推荐给好友无忧答案网 - 友情提示1、本主题所有言论和图片纯属会员个人意见,与本论坛立场无关
2、本站所有主题由该帖子作者发表,该帖子作者与享有帖子相关版权
3、关于附件下载等相关问题,请参考相关说明
4、无忧答案网官方客服QQ:(王老师),QQ:(无忧工作室)

我要回帖

更多关于 android 内存泄漏分析 的文章

 

随机推荐