当前位置: 首页 > 知识库问答 >
问题:

如何在不调用System.gc()的情况下优化内存;

邢永安
2023-03-14
[loop]
         if(!alreadyInLibrary(folder.getAbsolutePath())){
            Song s = new Song(folder.getAbsolutePath());
            this.addSong(s); // Add the song

            // Clear
            s = null;
            System.gc();
          }
[end loop]

谢谢

共有1个答案

吕德业
2023-03-14

通常,您不应该调用system.gc()。GC是一个复杂的软件组件,它自己知道何时工作以及每个周期释放多少内存。

此外,system.gc()的显式调用并不真正调用GC。它只是礼貌地要求GC工作。它可以启动,但可以推迟请求。

这意味着,如果不调用GC,程序将一直运行,直到GC确定它应该工作,然后释放它。所以,你的问题的答案是“只是不要担心内存问题,让GC在它认为该工作的时候去做它的工作。”

 类似资料:
  • 我有一个Android应用程序,在其中我有一个下面的类,其中包含用JNI包装的本机(C++)对象和其他java对象的字段: 在我的应用程序中,我不断地创建MyClass的实例: 当i大于某个数字时,例如当i>400或i>450时,应用程序崩溃。由于我已经像上面的(A)行一样显式地释放了本机内存,所以我认为应该不会有内存泄漏,并且java应该使用垃圾收集来撤销内存。但应用程序崩溃了,我怀疑这可能是内

  • 问题内容: 我正在运行一个wordpress网站,每个PHP进程的使用空间约为200mb至250mb。使用16GB的ram,服务器只能处理大约70个进程。通过将虚拟内存增加到16GB,它可以处理140个。之后,负载不断增加。如果10分钟内有200个连接,则在3Ghz四核xeon处理器上服务器负载将达到20个! 我曾尝试停用所有插件,但这只会使每个进程的PHP内存使用量减少不到10%。suPHP告诉

  • 问题内容: 有什么方法可以避免在初始化类时调用类,例如从类方法中调用? 我试图在Python中创建一个不区分大小写和标点符号的字符串类,以进行有效的比较,但是在不调用的情况下创建新实例时遇到了麻烦。 我应该替换为什么以用切片初始化新对象? 编辑: 受到以下答案的启发,已对初始化程序进行了编辑,以快速检查是否没有参数。 问题答案: 在此示例中,使用元类提供了一个不错的解决方案。元类的用途有限,但效果

  • 问题内容: 如何在Java程序中打开和关闭调试?如何在不重新编译Java程序的情况下打开和关闭调试? 问题答案: 无需使用IDE进行调试 1)您可以使用Assertions编写Java程序。您随时可以启用/禁用它们。 2)您可以使用配置了log4j.properties的日志。在Java程序中,您可以随时指定信息和调试日志,只要您想显示调试或信息日志等信息,就可以在log4j.properties

  • 问题内容: 如果我用javadoc 编写,它不会出现,因为标签在格式化文本方面具有特殊功能。 如何在Javadoc中显示此字符? 问题答案: 您可以使用为 < 和为 > 。

  • 问题内容: 我有一些JavaScript,可以触发对PHP脚本的约100次调用。php脚本会占用大量内存,并需要几秒钟才能完成,然后返回通过或失败的json响应。 我不希望ajax调用是异步的,因为服务器将停止运行其自身的100个实例,因此我尝试使用同步,唯一的问题是它冻结了网页,同时一次调用了一个脚本。 如何一次关闭一个Ajax调用并且不冻结我所在的页面? 问题答案: 您可以放入执行下一个调用的