我的客户端有一个名为 CacheDownloader 的类,它为我的主 jar(客户端)下载解压缩更新。我遇到了一个问题,因为它无法解压缩新客户端并在使用时替换它,所以我不得不制作一个新 jar(名为 ClientUpdater)来解压缩新客户端以替换旧客户端,然后打开新的.
ClientUpdater 打开客户端备份没问题。但是 CacheDownloader 无法打开 ClientUpdater,它会出现内存不足错误。
CacheDownloader 仍然会下载所有新文件并解压缩文件,ClientUpdater 所做的只是解压缩一个包含相当小的客户端的小 zip 文件。
以下是 CacheDownloader 加载 ClientUpdater 的方式:
Runtime.getRuntime().exec("java -jar " + getCacheDir() + "/ClientUpdater.jar");
System.exit(0);
这是完整的错误消息 - http://gyazo.com/8105ffd4c35f5f6d4a68a770fedf8f92
希望这是足够的上下文和信息,而不是冗长。我现在的问题是,我该如何解决这个问题?错误说我可以增加保留的代码缓存,这有负面影响吗?无论如何,我该怎么做,谷歌并没有真正展示它是如何解释它所做的。
我对 Java 很陌生,所以要记住一些事情。
最佳答案
您可以尝试以下步骤来解决此问题。
Runtime.getRuntime().exec("java -Xms2048m -Xmx2048m -jar " + getCacheDir() + "/ClientUpdater.jar");
ReservedCodeCacheSize
的大小,例如-XX:ReservedCodeCacheSize=256m 更多详情 here 您应该使用类似 visualvm 的分析器,并可以找到有关您的运行时环境的更多详细信息。例如内存、CPU、线程、堆大小等。
关于Java内存不足,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/30949056/