1、 在一个进程里面有多少个finalizer个线程?
A1个堆一个
B1个CPU一个
C1
D2
E我不知道怎么回答
2、 在分析过程中检查检查数据结构可以判别方法是否被JIT编译过?
AMethodTable
BEEClass
CMethodDescriptor
DPEHeader
E我不知道怎么回答
3、 什么命令能够检查对象被根化?
Afindroots
Broot
CDumpObj
D!gcroot
E我不知道怎么回答
4、 在过CPU挂起的时候,什么命令能够检查CPU的线程耗时?
A!analyze
B!runaway
C!threads
D~*
E我不知道怎么回答
5、 DotNet三种GC的模式?
AConcurrentWorkstationGC
BNon-ConcurrentWrokStationGC
CFinalizerGC
DServerGC
E我不知道怎么回答
6、 当对象超过多大时,系统将对象放入到LOH中?
A4000bytes
B无固定的值
C85000bytes
D1M
E我不知道怎么回答
7、如何定位内存泄漏出现在托管堆上?(分别采取2种方式来判别)
【方法一】打开性能计数器,设置监视对象为“.NetCLRMemory”和“Process”,启动监视。运行待分析的应用程序一段时间后,停止监视。点击查看日志数据,选择“.NETCLRMemory/#BytesinallHeaps”和“Process/PrivateBytes”节点。查看此时的图表,如果二者同增同减,说明系统内存增加很大程度上都是.Net程序导致的,即内存泄露于托管堆。
【方法二】用WinDbg肯定可以,不会。
8、 内存泄漏的分析流程是什么?并描述如何在堆中寻找对应的对象地址?
1. 再WinDbg中打开应用程序的dump文件(由调试器生成)。
2. 使用命令“!address–summary”查看内存,判断内存是否泄漏于GC堆上。
3. 如果内存泄露与GC堆,说明.Net应用程序的问题。
4. 使用命令“!dumpheap–stat”分析程序中对象的情况。该命令执行结果的第一列就是对应对象的地址。
5. 可以重点分析string对象。使用同样的命令,获取string的MethodTable,使用“!do”命令查看string对象的信息。
6. 使用“!gcroot”命令查看对象被根化在何处,大量的根化意味着GC处理的异常。
7. 使用“!finalizequeue”命令查看终止化队列。分析这些正在被终止的对象,正是这些数据导致内存异常的大量占用。
9、 从应用角度分析什么操作可能导致CPU长时间处在High状态下,什么情况会导致资源消耗比较低,但是应用却出现延迟?
1. 大数据排序、申请回收大空间、复杂数值运算(包括如视频播放、游戏环境贴图等的应用)等都会使CPU长期高负荷占用。
2. 资源(理解为内存)消耗比较低,说明没有过多的空间申请,或者只是空间调换。延迟,说明线程或进程被阻塞。所以下面是几个可能的原因:
1) 线程死锁或暂停。
2) 线程工作负荷超重(如1中的某些情况),导致响应不及时,并且可能连带阻塞了下游线程的访问。
3) 程序死循环。
10、请描述对象的Finalizer流程?
这里将Finalizer流程理解为.Net的析构流程,不包括.Net的Dispose模式。
1. GC会以一定的优化算法轮询所有的对象,如果该对象不会再被引用到,则GC认为该对象可以在适当的时候进行垃圾回收了。
2. GC会寻找一个合适的机会(如0代对象饱和、应用程序域被卸载、CLR异常等)启动回收操作。
3. 内存回收分两种情况:
a) 如果该对象没有显式定义Finalize方法,则直接回收内存。
b) 如果该对象已显式定义了Finalize方法,GC在第一次回收时,将其从终止化队列(即第8个问题的FinalizeQueue)中转移到准备回收的对象列表。在第二次回收时,GC调用该对象的Finalize方法,完成用户自定义析构,然后,将这些项从列表中移除。完成回收对象的内存。
分享到:
相关推荐
《C#与.NET程序员面试宝典》取材于各大IT公司的历年面试题252个(包括研发类笔试及口试题目、情商及智商类题目),详细分析了应聘C#与.NET程序员职位的常见考点。《C#与.NET程序员面试宝典》主要内容包括:面试流程...
│ 上海税友软件 面试题.doc │ 公司培训文档-混淆的基本概念.doc │ 基本算法.doc │ 孙卫琴精通struts.基于MVC的.java.web设计与开发.pdf │ 学习Struts提供的和Form相关标签.txt │ 日企编码规范.doc │ 电信盈科...
C语言面试题大汇总面试题及答案.doc Java23种设计模式(总结)1.doc JAVA_WEB面试笔试题.doc 实施人员初试题20091009.doc 笔试智力题.doc C语言面试题.doc 2011android面试题目及其答案大全.doc java基础笔试题.doc ...
│ 上海税友软件 面试题.doc │ 公司培训文档-混淆的基本概念.doc │ 基本算法.doc │ 孙卫琴精通struts.基于MVC的.java.web设计与开发.pdf │ 学习Struts提供的和Form相关标签.txt │ 日企编码规范.doc │ 电信盈科...
│ 上海税友软件 面试题.doc │ 公司培训文档-混淆的基本概念.doc │ 基本算法.doc │ 孙卫琴精通struts.基于MVC的.java.web设计与开发.pdf │ 学习Struts提供的和Form相关标签.txt │ 日企编码规范.doc │ 电信盈科...
│ 上海税友软件 面试题.doc │ 公司培训文档-混淆的基本概念.doc │ 基本算法.doc │ 孙卫琴精通struts.基于MVC的.java.web设计与开发.pdf │ 学习Struts提供的和Form相关标签.txt │ 日企编码规范.doc │ 电信盈科...
1、C 和 C++ 中 struct 有什么区别? Protection行为 能否定义函数 C 无 否,但可以有函数指针 C++ 有 可以,默认是public 2、C++中的 struct 和 class 有什么区别? 【参考答案】从语法上讲,class和struct做...
f、档案卷库(卷库管理,档案管理,档案销毁) g、考试管理(题库管理,试卷管理,在线考试,考试结果,题库分类) h、学习管理(在线学习,学习心得,心得管理) 8、客户关系 a、会员管理(我的会员,会员...
│ 上海税友软件 面试题.doc │ 公司培训文档-混淆的基本概念.doc │ 基本算法.doc │ 孙卫琴精通struts.基于MVC的.java.web设计与开发.pdf │ 学习Struts提供的和Form相关标签.txt │ 日企编码规范.doc │ 电信盈科...
利用最新的ASP.NET平台、javascript和AJAX、SQLSERVER关系型数据库等技术,结合OA思想的独特设计,建立一个开放的信息资源管理平台。 利用数据库及分布式处理技术、模块化功能设计,构造信息存储与事务处理平台。该...