判断:mfc 程序如何精确计时可以借助于finalize方法来精确记录在mfc 程序如何精确计时执行过程中内存资源的释放情况

参考:《深入理解Java虚拟机》
对于Java而言:
调用时机:当垃圾回收器要宣告一个对象死亡时,至少要经过两次标记过程:如果对象在进行可达性分析后发现没有和GC Roots相连接的引用链,就会被第一次标记,并且判断是否执行finalizer( )方法,如果对象覆盖finalizer( )方法且未被虚拟机调用过,那么这个对象会被放置在F-Queue队列中,并在稍后由一个虚拟机自动建立的低优先级的Finalizer线程区执行触发finalizer( )方法,但不承诺等待其运行结束。
finalization的目的:对象逃脱死亡的最后一次机会。(只要重新与引用链上的任何一个对象建立关联即可。)但是不建议使用,运行代价高昂,不确定性大,且无法保证各个对象的调用顺序。可用try-finally或其他替代。
1)垃圾回收器(garbage colector)决定回收某对象时,就会运行该对象的finalize()方法;
2)GC本来就是内存回收了,应用还需要在finalization做什么呢? 答案是大部分时候,什么都不用做(也就是不需要重载)。只有在某些很特殊的情况下,比如你调用了一些native的方法(一般是C写的),可以要在finaliztion里去调用C的释放函数。
finalize是Object类的一个方法,该方法在Object类中的声明
protected void finalize() throws Throwable { }
在垃圾回收器执行时会调用被回收对象的finalize()方法,可以覆盖此方法来实现对其资源的回收。注意:一旦垃圾回收器准备释放对象占用的内存,将首先调用该对象的finalize()方法,并且下一次垃圾回收动作发生时,才真正回收对象占用的内存空间。
1.在释放对象占用的内存之前,垃圾收集器会调用对象的finalize()方法。
2.析构finalization,比如你在调用了一些native的方法,可以要在finaliztion里去调用释放函数
垃圾回收器(garbage
colector)决定回收某对象时,就会运行该对象的finalize()方法,但是在java中很不幸,如果内存总是充足的,那么垃圾回收啃呢个永远不会进行,也就是finailize()可能永远不被执行,显然指望它作收尾工作时靠不住的。那么finalize()究竟是做什么的呢?它最主要的用途是回收特殊渠道申请的内存。java程序由垃圾回收器,所以一般情况下内存问题不用程序由操心。但有一种JNI(java
native interface)调用non-java程序(c或c++),finalize()的工作就是回收这部分内存。
主要的用途是回收特殊渠道申请的内存。Java程序有垃圾回收器,所以一般情况下内存问题不用程序员操心。但有一种JNI(Java
Native Interface)调用non-Java程序(C或C++),finalize()的工作就是回收这部分的内存。
finalize是object 类的一个方法,在垃圾回收期执行时会调用被回收对象的finalize方法,可以覆盖此方法来实现对其他资源的回收,例如关闭文件等,需要注意的是,一旦垃圾回收期准备好释放对象占用的内存空间,将首先调用其finalize方法,并且在下一次垃圾回收动作发生时才会真正回收对象占用的内存
垃圾回收器在回收某对象时,就会调用对象的finalize()方法。
析构finalization用于调用本地方法时,在finalization中释放对象占有的资源
finalize是在释放这个对象内存前调用。一个对象在在jvm认定是否被释放内存会至少标记两次,首先判断这个对象有没有必要执行finalize方法: jvm的gc有多种算法,常见的复制擦除算法(我的理解这里会被标记一次)不可达对象会被gc 1.有必要执行:对象覆盖了finalize或者对象主动调用了finalize,对象被标记,然后放入一个队列中等待执行finalize,执行之后jvm并不会等待finalize返回值,仅仅只是让你执行而已。 2.没必要执行:对象已经调用finalize(毕竟一个对象生命周期内只能调用一次finalize)直接等待死亡。 finalize中如果与gcroot引用链建立关联,这个对象会从gc队列中剔除,相当于对象自救。
在垃圾回收时释放对象时调用finalize
垃圾回收期会调用对象的finalize()方法 一般建议在该方法中释放对象持有的资源
当垃圾收集决定回收对象时就会调用该对象的finaliaze()方法,但是在java中很不幸,如果java内存很充足的话,垃圾回收永远不会进行,也就是说finalize()永远不会执行,所以指望它进行收尾工作是靠不住的的。fianlize()方法主要用于回收经过特殊渠道申请的内存,java有垃圾回收器,所以程序员不必去担心内存问题,但有一种JNI会调用non-java程序(c++、c),finalize就是用来回收这一部分内存的。
垃圾回收器(garbage colector)决定回收某对象时,就会运行该对象的finalize()方法
但是在Java中很不幸,如果内存总是充足的,那么垃圾回收可能永远不会进行,也就是说filalize()可能永远不被执行,显然指望它做收尾工作是靠不住的。
那么finalize()究竟是做什么的呢?它最主要的用途是回收特殊渠道申请的内存。Java程序有垃圾回收器,所以一般情况下内存问题不用程序员操心。但有一种JNI(Java
Native Interface)调用non-Java程序(C或C++),finalize()的工作就是回收这部分的内存。
在释放对象占用的内存之前,垃圾收集器会调用对象的finalize()方法。一般建议在该方法中释放对象持有的资源。
这道题你会答吗?花几分钟告诉大家答案吧!
扫描二维码,关注牛客网
下载牛客APP,随时随地刷题
京ICP备号-4
扫一扫,把题目装进口袋第3章面向对象的程序设计_文档库
文档库最新最全的文档下载
当前位置: & 第3章面向对象的程序设计
第3章面向对象的程序设计
√ 3.8 【判断正误】 Java 语言对内存的释放是采用垃圾自动回收机制。 Java 虚拟机自动判 断并收集“垃圾“,但一般不会立即释放他们的存储空间。
×3.9【判断正误】 Java 系统提供了方法“ System.gc()”来强制立即回收“垃圾” ,即当调 用该方法时,系统会立即回收“垃圾” 。
×3.10【判断正误】程序可以借助于 finalize 方法来精确记录在程序执行过程中内存资源 的释放情况。
×3.11【判断正误】如果在定义一个类的时候没有定义关键字 extends ,则这个类没有直接 父类。
√ 3.12【判断正误】 Java 语言规定:任何一个子类的构造方法都必须调用其父类的构造方 法(包括隐式调用) ,并且调用父类构造方法的语句必须是子类构造方法的第一条语句。 √ 3.13【判断正误】 在同一个类中, 不允许存在具有相同方法名和相同参数类型列表地方法, 即使该方法的返回类型不相同。
√ 3.14【 判断正误】 如果一个类不是内部类, 则它的访问属性不能是 private 或者 protected 。 √ 3.15【判断正误】抽象方法不能含有方法体,并且必须在抽象类中。
√ 3.16【判断正误】抽象类不能实例化的。抽象类的实例化, 应当通过其不具有抽象属性的 子类来创建。
×3.17 【判断正误 *】下面的程序输出整数 3.
public class J-Test
public int m-data=3;
public static void mian(String args[])
System.out.println(m-data);
}//方法 main 结束
}//类 J-Test 结束
√ 3.18【 判 断 正 误 **】 设 在 一 个 Java 包 cn.edu.tsinghua.kit 中 含 有 源 程 序 文 件 J-Data.java ,其内容如下:
package cn.edu.tsinghua.
public interface J-Data
Double PI=3.793;
J-Data结束
在另一个包中含有源程序文件 J-Ttest.java ,其内容如下
Import cn.edu.tsinghua.kit. J-D
Public class J-Test
Public static void main (String args[])
System.out.println(int)J-Data.PI;
}//方法 main 结束
}//类 J-Test 结束
假设类路径设置及源程序文件所在的路径都是正确的,则上面的程序可以正常进行编 与运行,最终可以输出 3。
3.19 【填空题 *】 面向对象的计算机语言一般应具有 3个基本特性, 分别是 继承性 多态性
Word文档免费下载:
(共34页)
第3章 面向对象程序设计 3.1 面向对象程序设计简介 3.2 继承、多态与接口 3.3 接口 3.1 面向对象程序设计简介 3.1.1 面向对象的基本概念 3.1.2 类的定义 1...第3章面向对象的程序设计简介 隐藏&& 1. 什么是面向对象的程序设计 最早的程序设计工作,是直接使用机器码进行编程的, 要利用计算机完成一件事,就得画上无数个 ...第章​面​向​对​象​程​序​设​计第3章 面向对象程序设计 Java语言是一种面向对象的高级程序设 计语言。OOP是目前最接近人类思维的...第3章面向对象程序设计_计算机软件及应用_IT/计算机_专业资料 暂无评价|0人阅读|0次下载|举报文档 第3章面向对象程序设计_计算机软件及应用_IT/计算机_专业资料。...第3章 C#面向对象程序设计 章 面向对象程序设计学习内容与要点类的创建与使用 类的继承与多态 接口创建与实现 泛型创建与实现 委托与事件 3.1 类在面向对象程序设...豆丁微信公众号
君,已阅读到文档的结尾了呢~~
java web 复习题 xhxjava复习题 二次根式复习题 十八大复习题 汉语拼音复习题 职业道德复习题 集合复习题 plc复习题 模电复习题 工勤技能复习题
扫扫二维码,随身浏览文档
手机或平板扫扫即可继续访问
Java 复习题
举报该文档为侵权文档。
举报该文档含有违规或不良信息。
反馈该文档无法正常浏览。
举报该文档为重复文档。
推荐理由:
将文档分享至:
分享完整地址
文档地址:
粘贴到BBS或博客
flash地址:
支持嵌入FLASH地址的网站使用
html代码:
&embed src='http://www.docin.com/DocinViewer-4.swf' width='100%' height='600' type=application/x-shockwave-flash ALLOWFULLSCREEN='true' ALLOWSCRIPTACCESS='always'&&/embed&
450px*300px480px*400px650px*490px
支持嵌入HTML代码的网站使用
您的内容已经提交成功
您所提交的内容需要审核后才能发布,请您等待!
3秒自动关闭窗口文档分类:
JAVA语言程序设计模拟试卷二.doc
下载后只包含 1 个 DOC 格式的文档,没有任何的图纸或源代码,
下载前请先预览,预览内容跟原文是一样的,在线预览图片经过高度压缩,下载原文更清晰。
您的浏览器不支持进度条
下载文档到电脑,查找使用更方便
还剩?页未读,继续阅读
该用户其他文档
下载所得到的文件列表JAVA语言程序设计模拟试卷二.doc
文档介绍:
北京语言大学网络教育学院《 JAVA 语言程序设计》模拟试卷二注意: 1. 试卷保密,考生不得将试卷带出考场或撕页,否则成绩作废。请监考老师负责监督。 2. 请各位考生注意考试纪律,***全部成绩以零分计算。 3. 本试卷满分 100 分,答题时间为 90 分钟。 4. 本试卷分为试题卷和答题卷,所有答案必须答在答题卷上,答在试题卷上不给分。一、【单项选择题】( 本大题共 20 小题,每小题 2 分,共 40分) 在每小题列出的四个选项中只有一个选项是符合题目要求的, 请将正确选项前的字母填在答题卷相应题号处。 1 、定义类头时能使用的修饰符是( C)。 2 、以下由 for 语句构成的循环执行的次数是( B)。 for( int i= 0;i++); [A] 有语法错,不能执行[B] 无限次[C] 执行 1次[D] 一次也不执行 3、 paint() 方法使用哪种类型的参数?(A) 4 、下列方法定义中,正确的是( A)。[A] int x( ){char ch='a';return (int)} [B] void x( ){...} [C] int x( ){...} [D] int x(int a,b){return a+b;} 5、设i、j、k 为类 x 中定义的 int 型变量名, 下列类 x 的构造函数中不正确的是(B)。[A] x( int m){...} [B] void x(int m){...} [C] x( int m,int n){...} [D] x(int h,int m,int n){...} 6 、下列类定义中,不正确的是( C)。[A] class x {....} [B] class x extends y {....} [C] static class x implements y1,y2 {....} [D] public class x extends Applet {....} 7 、下面的说法正确的是( C)。[A] Applet 包含线程或用线程来实现时,线程的 start 与 Applet 的 start 方法就是同一个方法[B] Applet 与线程的 start 一样,都用“对象名.start ”来调用[C] 在默认的安全配置条件下, Applet 不能访问任何本地资源[A] private [B] static [C] abstract [D] protected [A] Graphics [B] Graphics2D [C] String [D] Color [D] 编写一个 Applet 程序必须覆盖 start 方法 8 、下面语句执行后, i 的值是( B)。 for(int i=0,j=1;j&5;j+=3) i=i+j; 9 、下列最终属性 i 的定义中,正确的是( A)。[A] static final int i=100 ; [B] final int i=1.2 ; [C] final i='w' ; [D] 10 、下列哪个类的传输方式不是流模式的( C)。[A] ServerSocket [B] Socket [C] DatagramSocket [D] OutputStream 11、容器被重新设置大小后, 哪种布局管理器的容器中的组件大小不随容器大小的变化而改变?( B) [A] CardLayout [B] FlowLayout [C] BorderLayout [D] GridLayout 12、 void 的含义是( C)。[A] 方法体为空[B] 定义的方法没有形参[C] 定义的方法没有返回值[D] 方法的返回值不能参加算术运算 13 、要读一个较大的文件,下列创建对象的方法中哪个是最合适的?( C) [A] new FileInputStream( “ myfile ”); [B] new InputStreamReader(new FileInputStream( “ myfile ”); [C] new BufferedReader(new InputStreamReader(new FileInputStream( “ myfile ”))); [D] new essFile raf=new essFile(new File( “ myfile ”,” rw”)); 14 、哪个关键字可以对对象加互斥锁?( B) 15、 char 的数值范围是( B)。[A] 0~32767 [B] 0~65535 [C] -256~255 [D] - 16 、下面的说法正确的是( D)。[A] 应用程序中可以使用的所有语句都可以在 Applet 中使用[B] Applet 程序中可以使用的所有语句都可以在应用程序中使用[C] Applet 程序都可以当作应用程序使用[D] System.exit(0) 不能在 Applet 中使用 17 、如果一个 Applet 包含绘图功能,则下面哪个方法必须被覆盖?( C) [A] start 方法[B] stop 方法[C] paint 方法[D] init 方法 18 、下面哪些类用于实现 TCP/IP 客户和服务器?( C) [A] 4 [B] 5 [C] 6 [D] 7 [A] transient [B] synchronized [C] serialize [D] static [A] ServerSocket,DatagramSocket [B] Server,Socket [C] DatagramPacket,DatagramSocket [D] Socket,ServerSocket 19 、下列程序段执行后 b3 的结果是( D)。 boolean b1=true,b2,b3; 24=b1?b1:b2; [A] 0[B]1 [C] true [D] false 20 、设有定义 int i=123;long j=456; 下面赋值不正确的语句是( D)。[A] j=i [B] j=(long)i [C] i=(int)j [D] i=j 二、【判断题】(本大题共 10 小题,每小题 2 分,共 20 分;正确的填 T ,错误的填 F, 请将答案填写在答题卷相应题号处) 21、 Java 的事件处理机制中引入了委托事件模型,具体说来就是,所有事件类都有一个监听者接口与之相对应, 而事件类中的每个具体事件类型都有一个具体的抽象方法与之对应。(F) 22 、用 Javac 编译 Java 源文件后得到代码叫字节码。(T) 23 、一个方法最多能有一个 return 语句。(T) 24、 Java 语言中一个 Char 类型的数据占用 2 个字节大小的内存空间。(T) 25、 Java 系统提供了方法“ System.gc( )”来强制立即回收“垃圾”,即当调用该方法时,系统会立即回收“垃圾”。(F) 26、程序可
内容来自淘豆网www.taodocs.com转载请标明出处.
文件大小:0 KB
下载次数:JAVA CHAPTER3练习_图文_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
JAVA CHAPTER3练习
阅读已结束,下载本文需要
想免费下载本文?
定制HR最喜欢的简历
下载文档到电脑,同时保存到云知识,更方便管理
加入VIP
还剩29页未读,
定制HR最喜欢的简历
你可能喜欢}

我要回帖

更多关于 gc.suppressfinalize 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信