8.4 动态性能分析方法与工具
1. 以下关于Dynamic Program
Analysis的说法,不正确的是__
A 根据程序执行的过程与结果,分析代码在时空性能方面所展现出的性质
B 对程序执行的性能没有影响
C 可用来发现程序中的“热点”语句,即哪些语句被频繁执行
D 只需执行次,即可比测试更容易发现程序中的性能弱点和bug
E 能够发现程序中各种不同类型的object分别占用了多少内存空间
正确答案:BD
2.关于profiling的三种策略,说法不正确的是
A 采用代码注入的策略,对程序性能的度量最为准确
B 采用Instrumented VM的策略,需针对不同的VM分别使用不同的profiling工具
C 采用Sampling的策略,对程序执行性能的影响最大
D 采用Instrumented VM和Sampling的策略,均不需对程序代码进行修改
E 采用代码注入的策略,不可能对目标代码进行动态注入
正确答案:ACE
3. 关于Java提供的若Fprofiling工具,说法不正确的是_
A 有工具可以获取Java程序运行时JVM管理的各heap区域的动态占用情况
B 有工具可以得知指定的Java程序所采用的GC策略
C 有工具可以对正在运行的Java程序的JVM内存配置进行参数的动态设置
D 即使不使用这些工具,当Java程序抛出0utOfMemoryError时,JVM也能够自动导出内存溢出时刻的heap dump
E 有工具可以获取当前时刻Java程序主线程的call stack的状态
正确答案:CD
4.
从该结果看,在第一次GC前后,survivor space的占用比例增加了_ old generation的占用比例增加了_
A 91.03%,1. 98%
B -5.99%,1.39%
C -94.55%,-97 .02%
D 91.03%,0.37%
正确答案:B
5.不能导出某个Java迸程的heap dump文件的是_
A jmap
B jcmd
C jconsole
D jstack
E jhat
F Eclipse Memory Analyzer
正确答案: DEF
6.使用profiling工具来监控你的Lab3程序时,发现heap中出现了大量的PhysicalObject对象实例,占用了大量内存。可能的原因是___
A: 你的Lab3将Physicalobject设计A 为mutable,并对其采取了防御式拷贝策略以避免表示泄漏
B: 本次运行读入了一个大文件,故B 构造Circularorbi t对象时不得不构造大量Physicalobject对象
C: 导出heap的时刻之前较长时间没有进行GC,故大量无活性的Physica lobject仍处于内存中
D:你的Lab3对Physicalobject的生成(new)采用了"静态工厂”模式,导致JVM无法获取各
Physicalobject对象的活性而无法及时GC
正确答案:ABC
7.对代码进行dynamic profiling,不需要在__时候进行
A: ADT的初始版本完成后(包括完成了Rep、方法、AF、RI、Spec、各方法的代码)
B:ADT测试完成后(根据spec设计测试用例,用JUnit执行测试用例并获得结果后)
每次向Git进行一次commit之前
C: ADT迭代开发结束,除性能之外的其他外部和内部质量指标的优化均已经达到期望
D: 交付用户之前,发现程序运行缓慢,与期望不符
正确答案:ABC