Away3D 的实体收集器Bug】的更多相关文章

最近在改Away3D源码的时候遇到个很郁闷的问题,发现创建的Mesh 释放不掉. 分析源码发现 EntityListItemPool 类中逻辑Bug在getItem()函数中发现_poolSize 对象池大小如果够用的情况下 它采用的方式是复用EntityListItem 那么假设我删除了场景上有10个对象我全部删除了然后我再创建9个 这时候总有1个对象是被缓存着的.一直要等到我创建第10个对象他才会被释放掉. 没辙了跑到 看看对象销毁流程吧. 对象被销毁时会调用 Scene3D 的 unreg…
View3D 顾名思义 它就是一个3D视口,视口的默认值是无穷大的,即相当于“窗口”是无限大的,我们看到的将是外面的所有景物即flash尺寸是视口的有效视域.传统电视的高宽比为4:3,现在的高清电视的高宽比为16:9,你也可以如此这般地去设置.它是一个Sprite 的子类.主要用于创建 3D场景 相机 及渲染.相信很多人都和我一样在想View3D 它究竟做了什么?很多人估计想都不用想可以回答这个问题 “渲染”!那么它是如何渲染的?除了渲染它还干了什么?带着这些问题打开 Away3d 源码 Vie…
带着上次的疑问我们继续探讨Away3D 的渲染流程. 在Away3D中所有的显示对象都是继承Object3D 的我们先看看显示对象和继承关系. Object3D |---ObjectContainer3D  (3D显示容器) |---Entity (所有的3D实体对象的抽象基类) |---Mesh (网格对象) |---Camera3D (摄影机[非显示对象]) |---SegmentSet (线段的集合可以绘制线) |---Sprite3D (公告板始终面向摄像机) 以上显示对象中最常用的 是…
1 Stream Stream 是 Java 8 提供的一系列对可迭代元素处理的优化方案,使用 Stream 可以大大减少代码量,提高代码的可读性并且使代码更易并行. 2 迭代 2.1 需求 随机创建int类型的数组,计算数组中各个元素的总和 2.2 思路 2.2.1 外部迭代 通过for循环迭代数组 2.2.2 内部迭代 先将数组转化成流 -> 在通过流的相关操作来实现 2.2.3 外部迭代和内部迭代 外部迭代式串行的,如果要实现并行需要自己编写代码实现:内部迭代实现并行操作只需要调用一个pa…
收集器用法详解: 在上次已经系统的阅读了Collector收集器的Javadoc对它已经有一个比较详细的认知了,但是!!!它毕境是只是一个接口,要使用的话还得用它的实现类,所以在Java8中有它进行了实现,而且也只有唯一的一个实现,其实现类名叫:CollectorImpl,它在咱们已经使用过N次的Collectors类中,如下: 其把它的完整代码贴出来,如下: /** * Simple implementation class for {@code Collector}. * * @param…
收集器用法详解与多级分组和分区 为什么在collectors类中定义一个静态内部类? static class CollectorImpl<T, A, R> implements Collector<T, A, R> 设计上,本身就是一个辅助类,是一个工厂.作用是给开发者提供常见的收集器实现.提供的方法都是静态方法,可以直接调用. 函数式编程最大的特点:表示做什么,而不是如何做.开发者更注重如做什么,底层实现如何做. /** * Implementations of {@link…
Garbage-First,面向服务端的垃圾收集器. 并行与并发:充分利用多核环境减少停顿时间, 分代收集:不需要配合其它收集器 空间整合:整体上看属于标记整理算法,局部(region之间)数据复制算法,运作期间不会产生空间碎片 停顿可预测,建立可以预测的停顿时间模型. 内存管理: 将整个java堆划分为多个大小形同的区域region,新生代和老年代都是region的集合.可以有计划的避免在全区域内进行垃圾收集. 回收方式:跟踪每一个region里面的垃圾堆积的价值大小(回收所得的空间大小以及所…
Serial收集器的老年代版本 单线程收集器 标记-整理算法 stop the world Client模式下的虚拟机使用 Server模式下,搭配Parallel Scavenge使用及CMS发生Concurrent Mode Failure之后的预案…
新生代收集器,复制算法,并行收集,面向吞吐量要求(吞吐量优先收集器). 吞吐量=用户代码运行时间/(用户代码运行时间+垃圾回收时间) -XX:MaxGCPauseMillis:控制最大垃圾收集停顿时间,大于零的毫秒数. -XX:GCTimeRatio:吞吐量大小,0到100的整数,垃圾收集时间占总时间的比例,计算1/(1+n)gc时间占用比例. -XX:UseAdaptiveSizePolicy:打开之后,就不需要设置新生代大小(-Xmn),Edian,survivor比例及(-XX:Survi…
新生代收集器,CMS默认搭配,Serial的多线程版本. -XX:UseParNewGC:指定使用ParNew收集器. -XX:ParalletGCThreads:指定限制垃圾收收集的线程数量. 默认开启的线程数等于cpu数. 多核环境较Serial效率高. 并行收集(非并发). 复制算法. 附: 并行收集:多条垃圾收集器同时工作,用户线程处于等待状态. 并发收集:用户线程与垃圾收集器线程同时工作,用户线程在继续运行,垃圾收集程序运行于另外一个cpu上.…