相关疑难解决方法(0)

为什么C++没有垃圾收集器?

我不是问这个问题,因为垃圾收集的优点首先.我提出这个问题的主要原因是我知道Bjarne Stroustrup已经说过C++在某些时候会有一个垃圾收集器.

话虽如此,为什么还没有添加?已经有一些垃圾收集器用于C++.这只是那些"说起来容易做起来难"的事情吗?还是有其他原因没有添加(并且不会在C++ 11中添加)?

交叉链接:

为了澄清,我理解为什么C++在第一次创建时没有垃圾收集器的原因.我想知道为什么收藏家不能加入.

c++ garbage-collection c++11

258
推荐指数
11
解决办法
15万
查看次数

如何避免Java游戏中的垃圾收集延迟?(最佳实践)

我正在使用Java平台为Android平台调整交互式游戏.偶尔会有绘图和交互进行垃圾收集的打嗝.通常它不到十分之一秒,但有时在非常慢的设备上可能会达到200毫秒.

我正在使用ddms profiler(Android SDK的一部分)来搜索我的内存分配来自哪里,并从我的内部绘图和逻辑循环中删除它们.

最糟糕的罪犯是短循环,如,

for(GameObject gob : interactiveObjects)
    gob.onDraw(canvas);
Run Code Online (Sandbox Code Playgroud)

每次循环执行的地方都有iterator分配.我现在正在ArrayList为我的对象使用arrays().如果我想在内部循环中使用树或哈希,我知道我需要小心甚至重新实现它们而不是使用Java Collections框架,因为我无法负担额外的垃圾收集.当我在查看优先级队列时,可能会出现这种情况.

我也很难在哪里显示分数和进度Canvas.drawText.这是不好的,

canvas.drawText("Your score is: " + Score.points, x, y, paint);
Run Code Online (Sandbox Code Playgroud)

因为Strings,char数组StringBuffers将被分配到所有地方以使其工作.如果你有几个文本显示项目,并运行框架每秒60次开始加起来,将增加你的垃圾收集打嗝.我认为这里最好的选择是保持char[]数组并解码intdouble手动解码并将字符串连接到开头和结尾.我想听听是否有更清洁的东西.

我知道必须有其他人来处理这件事.您如何处理它以及您发现在Java或Android上以交互方式运行的陷阱和最佳实践?这些gc问题足以让我错过手动内存管理,但不是很多.

java performance android garbage-collection

63
推荐指数
3
解决办法
3万
查看次数

标签 统计

garbage-collection ×2

android ×1

c++ ×1

c++11 ×1

java ×1

performance ×1