首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Java内存不足

Java内存不足
EN

Stack Overflow用户
提问于 2015-06-20 08:23:35
回答 2查看 171关注 0票数 4

对于我的客户机,我有一个名为CacheDownloader的类,它为我的主jar客户机下载解压缩更新。我遇到了一个问题,因为它不能解压缩新的客户端并在使用时替换它,所以我必须创建一个新的jar (名为ClientUpdater),它将解压缩新的客户端以替换旧的,然后打开新的。

ClientUpdater打开客户端备份没有问题。但是,CacheDownloader无法打开ClientUpdater,它会出现内存不足错误。

CacheDownloader仍然下载所有新文件并解压缩最主要的文件,ClientUpdater所做的只是解压一个包含相当小的客户端的很小的压缩文件。

下面是CacheDownloader加载ClientUpdater的方式:

代码语言:javascript
复制
Runtime.getRuntime().exec("java -jar " + getCacheDir() + "/ClientUpdater.jar");
System.exit(0);

以下是完整的错误消息- http://gyazo.com/8105ffd4c35f5f6d4a68a770fedf8f92

希望这是足够的上下文和信息,而不是太长。我现在的问题是,我该如何着手解决这个问题?错误告诉我可以增加保留的代码缓存,这有负面的一面吗?不管怎样,我该怎么做呢,谷歌并没有真正展示它是如何解释它的作用的。

我对Java还很陌生,所以一定要记住一些事情。

EN

回答 2

Stack Overflow用户

发布于 2015-06-20 09:13:33

你可以尝试下面的步骤来解决这个问题。

  1. 增加进程的最小/最大堆大小

Runtime.getRuntime().exec("java -Xms2048m -Xmx2048m -jar " + getCacheDir() + "/ClientUpdater.jar");

  • Increase ReservedCodeCacheSize的大小,例如-XX:ReservedCodeCacheSize=256m more details here

您应该使用像visualvm这样的分析器,并且可以找到有关您的运行时环境的更多细节。例如内存、cpu、线程、堆大小等。

票数 2
EN

Stack Overflow用户

发布于 2015-06-20 10:21:40

我知道这是回复。我建议您使用反射来加载客户端,因为在环境变量配置不正确的系统上,使用Runtime.exec将不起作用。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30949056

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档