草庐IT

java - 使用局部变量与字段对 GC 的影响

我在onDraw()方法的调用堆栈中有一个向下3层的方法。每次重绘调用数百次,有时数千次。我已经对onDraw()方法进行了广泛的分析,我可以看到以下方法占总数的14%,因此绝对值得一看。我需要在缩放和拖动操作期间提高帧速率。privatevoidgetVisiblePointsFromPath(){doublelongRads=longitude*(Math.PI/180);doublelatRads=latitude*(Math.PI/180);...}当方法退出并且double超出范围时,我假设它们符合GC的条件,尽管我知道这可能发生的时间是不确定的。这样做有什么好处吗:publ

c# - 单体机器人 : Performing a full GC

我尝试创建我的小粒子系统。我有带有粒子列表的ParticleManager并在Canvas上绘制我的粒子。我只在init()函数中创建了任何新对象,如Paint等!如果粒子大小for(intparticle=0;particle0?true:false{particles[particle]=null;//hereItriedallvariationslike//((IDisposable)particles[particle]).Dispose();//GC.SuppressFinalize(particles[particle]);//System.GC.ReRegisterFor

android - 内存泄漏 ;对象没有 GC 根

我正在尝试解决我的应用程序中的内存泄漏问题。使用Eclipse内存分析器。由于OOM错误,我的应用程序在一段时间后崩溃。最大的嫌疑似乎是我使用的9个ViewFlippers。在分析器中查看它们时,检查员说它没有GC根。这是否意味着它不会被垃圾收集器清理?如果是这样,我将如何解决这个问题......手动清除它们?或者更好的是,我如何将它包含在GCroot中?我在内存分析方面还很陌生,所以可以使用一些技巧。 最佳答案 实际上恰恰相反,“NoGCrootfound”,意味着该对象不再被引用,所以垃圾收集器将在下次运行时清理它。观看这个很棒

android - GC 和 onTouch 在通过 ndk 使用 ffmpeg 的应用程序中导致致命信号 11 (SIGSEGV) 错误

我在使用FFmpeg和NDK时遇到了一个令人讨厌但众所周知的错误:A/libc(9845):Fatalsignal11(SIGSEGV),code1,faultaddr0xa0a9f000intid9921(AsyncTask#4)更新几个小时后,我发现问题可能有两个来源。一个与多线程有关。我检查了它并修复了它。现在,应用仅在视频播放(ndk)开启时崩溃。我在触摸事件中放置了一个“计数器”surfaceSterowanieKamera.setOnTouchListener(newView.OnTouchListener(){intcounter=0;@Overridepublicboo

android - 添加依赖后"GC Overhead limit exceeded"

类似于thisquestion,我收到以下错误:[INFO]---android-maven-plugin:3.3.0:dex(default-dex)@betodef-android---[INFO]/usr/lib/jvm/java-6-sun-1.6.0.32/jre/bin/java[-Xmx1024M,{snip}[INFO][INFO]UNEXPECTEDTOP-LEVELERROR:[INFO]java.lang.OutOfMemoryError:GCoverheadlimitexceeded这是在我向我的Android项目添加了几个依赖项(包括fastutil)之后发生

java - Android GC 考虑因素——GC 何时运行,是否可以从代码中跟踪其运行状态?

我一直在寻找描述DalvikVM垃圾收集器架构的详细设计文档,但没有找到太多。考虑到GC运行的性能影响,我真的很想更好地理解5个具体问题:1.Android中究竟是什么触发了GC?我见过的其他VM实现通常允许在GC收到运行信号之前将一定比例的系统内存分配给应用程序。然而,扫描以下LogCat似乎显示DalvikGC至少部分地经常运行——12-1411:34:57.753:D/dalvikvm(279):GC_EXTERNAL_ALLOCfreed735objects/54272bytesin90ms12-1411:34:57.893:D/dalvikvm(279):GC_EXTERNA

Android:GC 不尊重 SoftReferences?

看起来Dalvik的垃圾收集器不尊重SoftReferences并尽快删除它们,就像WeakReferences一样。我还不是100%确定,但尽管事实上仍有大约3MB的可用内存,但在我在LogCat中看到“GCfreedbla-bla-blabytes”后,我的SoftReferences被清除了。此外,我还看到了MarkMurphy的评论here:Exceptthatitdoesn'tworkonAndroid,atleastinthe1.5timeframe.IhavenoideaiftheGCSoftReferencebugshavebeenfixed.SoftReference

android - 由于 Android GC 性能而改变编码风格,有多远是太远了?

我一直听说Android应用程序应该尽量限制创建的对象数量,以减少垃圾收集器的工作量。您可能不希望创建大量对象来跟踪有限的内存占用,这是有道理的,例如在传统的服务器应用程序上,在几秒钟内创建100,000个对象并非闻所未闻。问题是我应该走多远?我已经看到大量依赖静态的Android应用程序示例,以便据称“加快速度”。将需要进行垃圾收集的实例数量从几十个增加到数百个真的会有那么大的不同吗?我可以想象改变我的编码风格,现在创建数十万个对象,就像您在成熟的Java-EE服务器上可能拥有的那样,但依靠一堆静态来(据说)减少要被垃圾收集的对象的数量似乎奇怪。为了创建高性能Android应用,真正

【CLR C#】面向面试的.Net的GC(垃圾回收)机制及其整体流程

【CLRC#】浅析.Net的GC(垃圾回收)机制及其整体流程写在前面:在.NET程序开发中,为了将开发人员从繁琐的内存管理中解脱出来,将更多的精力花费在业务逻辑上,CLR提供了自动执行垃圾回收的机制来进行内存管理,开发人员甚至感觉不到这一过程的存在。.NET程序可以找出某个时间点上哪些已分配的内存空间没有被程序使用,并自动释放它们。自动找出并释放不再使用的内存空间机制,就称为垃圾回收机制。本文主要介绍dotnet中的GC(垃圾回收)机制及其整体流程。本文关键字:CLR、.Net、GC(垃圾回收)、C#、面试文章目录【CLRC#】浅析.Net的GC(垃圾回收)机制及其整体流程一、定义1.什么是G

android - 其他进程调用 GC 会减慢我的游戏速度

我正在为Android>=2.1编写实时街机游戏。在游戏过程中,我不会分配内存,以免引诱GC。因为如果GC调用,它需要处理器70-200毫秒。用户将其视为“哦,不,那个游戏是滞后的......”。我检查了LogCat。有很多GC_FOR_MALLOC或GC_EXPLICIT。但是...不是来self进程的PID!我的游戏不会引起他们。它们是由于其他进程在后台运行引起的。一些墙纸、小部件、radio、电子邮件、天气预报和其他服务......完全看不懂。例如,当墙纸消失时,我想它的onPause()会被调用。因此,它应该停止所有线程并且当然不分配任何内存(或调用System.gc())。也