镇江市网站建设,做购物网站的初衷,wordpress 初始化sql,河北建设网站怎么下载企业锁卡尔迪亚#xff08;Carl Dea#xff09;最近跟踪了我的一篇名为“ 保存内存”的博客文章#xff01; 为属性使用阴影字段 。 在他的博客中#xff0c;他建议使用一个称为“属性访问器”的接口来消除使用阴影字段所需的大量样板代码。 卡尔还提到他尚未用大量数据测试他的方… 卡尔·迪亚Carl Dea最近跟踪了我的一篇名为“ 保存内存”的博客文章 为属性使用阴影字段 。 在他的博客中他建议使用一个称为“属性访问器”的接口来消除使用阴影字段所需的大量样板代码。 卡尔还提到他尚未用大量数据测试他的方法他或某些读者可能会跟进性能比较。 所以它来了。 我编写了一个小型测试应用程序该应用程序实现了卡尔在他的帖子中提到的三种策略 在类被实例化的同时实例化的标准属性 卡尔建议的属性访问器接口 我最近的博客文章中提出的阴影区域 该代码可以在GitHub上找到 。 运行它时请确保将初始堆大小和最大堆大小设置为2048 MB -ms2048m -mx2048m否则内存分配会弄乱结果。 该应用程序允许用户在有或没有要求属性的情况下执行这些策略。 它测量花费的时间和使用的内存。 应该注意的是由于我使用System.currentTimeInMillis和Runtime.gc 因此测量结果不科学。 当运行几次时我仍然会认为这些测试的质量值是可以接受的。 下面的第一个屏幕截图显示了当您创建1,000至2,000,000个Carl用于其博客的Employee类实例时获得的数量。 测试不要求提供雇员可用的属性姓名权力主管奴才 如您所见“影子字段”策略是最快的并且使用的内存量最少。 这是有道理的因为“标准属性”策略总是创建那些胖属性对象而“属性访问器接口”在内部管理每个模型对象的哈希映射。 只有“影子字段”策略才能使用最少的数据结构。 对于选定的测试它总共可以节省230 MB。 现在如果您想象典型的应用程序具有许多模型类并且其中许多类都比Employee测试类复杂得多那么您可以想象可以节省多少内存。 下一个屏幕截图显示了在访问Employee类中的所有四个属性和可观察对象时所进行的测量。 现在“标准属性”策略是最快的也是使用最少内存的策略。 再次讲得通因为该策略现在针对给定的用例实现了完美的方法。 但是“影子域”策略排在第二位。 结论 “属性访问器接口”策略成功地减少了阴影场所需的所有样板代码所产生的噪声但是我认为这样做的代价太高了无法为创建多个模型对象的任何应用程序付钱。 PS应该注意的是当JVM的初始堆大小保留为其默认设置时该比较甚至更支持“影子字段”策略。 在这种情况下测试应用程序必须不断要求更多的堆空间这是一项相当昂贵的操作。 翻译自: https://www.javacodegeeks.com/2016/04/shadow-fields-vs-property-accessor-interface.html