在系统抛出异常处设置断点
程序不知道跑到哪个地方就 crash 了,而 crash 又很难重现。
保守的做法是: 在系统抛出异常之前设置断点. (具体来说是在 objc_exception_throw 处设置断点。)
设置步骤为:
1. 在 XCode 按 CMD + 6,进入断点管理窗口;
2. 然后点击右下方的 +,增加新的 Symbolic Breakpoint。
3. 在 Symbol 一栏输入:objc_exception_throw,然后点击 done,完成。
这样在 Debug 模式下,如果程序即将抛出异常,就能在抛出异常处中断了。
JVM内存参数详解以及配置调优(四)-输出日志文件
在进行JVM内存分析时,可以将一些日志文件进行输出,帮助我们进行性能诊断,在JVM的启动参数中添加需要的参数即可:
-verbose:gc 输出一些GC信息
-XX:+PrintGCDetails 输出GC详细信息
-XX:+PrintGCTimeStamps 包含时间戳信息
-Xloggc:filename 输出GC信息到日志文件
综合前面所讲的所有调优参数,一个可能的JVM启动参数信息如下:
-server -verbose:gc -Xloggc:gc.log -XX:+PrintGCDetails -XX:+PrintGCTimeStamps -XX:+UseParallelGC -XX:+UseParallelOldGC -Xmx1000M -Xms1000M -XX:PermSize=64M -XX:MaxPermSize=128M -XX:NewSize=640M -XX:MaxNewSize=640M -Dcom.sun.management.jmxremote -Djava.rmi.server.hostname=192.168.10.34 -Dcom.sun.management.jmxremote.port=8999 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false
说明:
-XX:+UseParallelGC (说明: 对于web server来说应该使用parallelgc,其throughput较大,但其pause time有可能大于1秒)
-XX:+UseParallelOldGC (说明major collection也使用multi thread)
-Xmx1000M -Xms1000M -XX:PermSize=64M -XX:MaxPermSize=128M -XX:NewSize=640M -XX:MaxNewSize=640M (说明:指定最大和最小的heap为相同)
一、外观模式
为子系统中的一组接口提供一个一致的界面,此模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。
为什么使用外观模式?
当股票一,二,三,国债一,二任一个发生变化时,都会直接影响到每一个客户。这样耦合度太高。
我们或一种方式来看:
当股票一,二,三,国债一,二任一个发生变化时,只会直接影响到基金,而客户不用关心这些股票和国债的变化,他们只知道基金的增益对他们有影响。因为基金是由很多这些股票和国债聚合成,所以不会因为一两个变化,而产生大的波动,相对比较稳定。
所以选择后一种方式,可以降低耦合度。减少对象之间的关联性,以维护和管理。
二、类图
Client 跟Façade 联系,Facade来管理子系统。