一文带你了解不一样的SQL
|
如图所示,是典型的分代回收内存模型。对象从年轻代提升到老年代,有四种方式。
对于垃圾回收器的优化,就是要确保尽量多的对象在年轻代里分配,减少对象提升到老年代的可能。虽然这种思想在G1里弱化了许多。 End了解了操作系统的内存里都有啥,又了解了JVM的内存里都有啥,我们就可以淡定纵容的针对于每一种出现问题的情况,进行针对性排查和优化。
文章到这里嘎然而止。下一篇,我们以几个实际的案例,来看一下Java的内存问题排查的具体过程。 要找到哪些是存活对象,就需要从源头上追溯。在JVM中,常见的GC Roots就有静态的成员变量等,比如一个静态的HashMap。 另外一部分,就是线程所关联的虚拟机栈和本地方法栈里面的内容。 我们说了这老半天,其实这种追溯方式有一个专有的名词:可达性分析法。与之类似的还有引用计数法,但由于有环形依赖的问题,所以几乎没有回收器使用这种形式。 并不是说只要是和GC Roots有一条联系(Reference Chain),对象就是存活的,它还与对象的引用级别有关。
平常情况下,我们使用的对象就是强引用。软引用和弱引用在一些缓存框架中用的比较广泛,对象的重要程度也比较弱。 8.对象的提升
大多数垃圾回收器都是分代垃圾回收,我们从上面对G1的描述就能够看出来。 神经网络最喜欢的损失函数之一是交叉熵。 无论是分类的,稀疏的还是二进制的交叉熵,该度量标准都是高性能神经网络的默认损耗函数之一。 它也可以用于几乎所有分类算法的优化,例如逻辑回归。 像熵的其他应用(例如联合熵和条件熵)一样,交叉熵是对熵进行严格定义的多种口味之一,适合于独特的应用。 像Kullback-Lieber发散(KLD)一样,交叉熵也处理两个分布p和q之间的关系,分别表示真实分布p和近似分布q。 但是,KLD衡量两个分布之间的相对熵,而交叉熵衡量两个分布之间的"总熵"。 度量定义为使用模型分布q对来自分布p的源的数据进行编码所需的平均位数。 如果考虑目标分布p和近似值q,我们希望减少使用q而不是p表示事件所需的位数。 另一方面,相对熵(KLD)衡量从分布q中的p表示事件所需的额外位数。 交叉熵似乎是衡量模型性能的一种回旋方式,但是有几个优点:
尽管熵并不总是最佳的损失函数(尤其是在目标函数p尚未明确定义的情况下),但熵通常表现为性能增强,这说明了熵在任何地方都存在。
通过在机器学习中使用熵,它的核心组成部分(不确定性和概率)可以通过交叉熵,相对熵和信息增益等思想得到很好的体现。 熵对于处理未知数非常明确,这在模型构建中非常需要。 当模型在熵上进行优化时,它们能够以增强的知识和目标意识在不可预测的平原上徘徊。 (编辑:阜新站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |

