(58)GC
1)垃圾回收方法:
引用计数法:给一个对象添加引用计数器,每当有个地方引用它,计数器就加1;引用失效就减1。
可达性分析算法:以根集对象为起始点进行搜索,如果有对象不可达的话,即是垃圾对象。这里的根集一般包括java栈中引用的对象、方法区常良池中引用的对象
本地方法中引用的对象等。
2)回收算法也有如下几种:
1.标记-清除(Mark-sweep):不足:效率低;标记清除之后会产生大量碎片。
2.复制(Copying)
3.标记-整理(Mark-Compact)
4.分代收集算法
1)年轻代:是所有新对象产生的地方。
2)年老代:在年轻代中经历了N次回收后仍然没有被清除的对象,就会被放到年老代中
3)持久代:用于存放静态文件,比如java类、方法等。持久代对垃圾回收没有显著的影响。
年轻代:涉及了复制算法;年老代:涉及了“标记-整理(Mark-Sweep)”的算法。
(59)zookeeper用来做什么?zookeeper高可用松耦合
zookeeper的实际运用场景:
1.有一组服务器向客户端提供某种服务
2.分布式锁服务。Zookeeper提供了一个锁服务解决了这样的问题,能让我们在做分布式数据运算时候,保证数据操作的一致性。 3.配置管理。可以把zookeeper当成一个高可用的配置存储器,把这样的事情交给zookeeper进行管理,我们将集群的配置文件拷贝到zookeeper的文件系统的某个节点上,然后用zookeeper监控所有分布式系统里配置文件的状态,一旦发现有配置文件发生了变化,每台服务器都会收到zookeeper的通知,让每台服务器同步zookeeper里的配置文件,zookeeper服务也会保证同步操作原子性,确保每个服务器的配置文件都能被正确的更新。 4.为分布式系统提供故障修复的功能。集群管理最麻烦的事情就是节点故障管理,zookeeper可以让集群选出一个健康的节点作为master,master节点会知道当前集群的每台服务器的运行状况,一旦某个节点发生故障,master会把这个情况通知给集群其他服务器,从而重新分配不同节点的计算任务。master故障了,那怎么办了?zookeeper也考虑到了这点,zookeeper内部有一个“选举领导者的算法”,master可以动态选择,当master故障时候,zookeeper能马上选出新的master对集群进行管理。

(责任编辑:admin)