首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >错误com.graphhopper.http.GHErrorHandler -超出GC开销限制

错误com.graphhopper.http.GHErrorHandler -超出GC开销限制
EN

Stack Overflow用户
提问于 2016-07-12 08:05:37
回答 1查看 231关注 0票数 0

我在本地使用Graphhopper来获取两个纬度/经度之间的行驶方向。一切都很好,当我只加载了一个国家的数据时,我在不到100ms的时间内就得到了结果。现在我已经将数据集加载到Asia,但结果变得太慢(在某些情况下超过10秒)。现在,对于一些路由,我得到了这个错误:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
ERROR com.graphhopper.http.GHErrorHandler - GC overhead limit exceeded, 
                java.lang.OutOfMemoryError: GC overhead limit exceeded

我的目标是加载所有的世界数据,并在不到1秒的时间内得到结果。我可以做什么性能优化来实现这个目标?目前我使用的是带有8 GB RAM的系统。如果需要优化性能,我愿意增加RAM。

EN

回答 1

Stack Overflow用户

发布于 2016-07-12 08:14:21

“超出GC开销限制”的消息意味着JVM花费了大部分时间进行垃圾收集。这通常意味着堆已接近满。

有两种方法可以解决这个问题:

你可以增加

  • 堆的大小。但是,如果将堆大小增加得太多,最终可能会使用比物理RAM更多的虚拟内存。这可能会将你的系统推入一种虚拟机崩溃的模式,即它将大部分时间花在内存和交换设备之间的页面交换上。
  • 你可以寻找减少内存使用的方法。现在我不知道graphhopper是什么,但听起来它是一个通过将大型图形加载到内存中来工作的应用程序。如果是这种情况,那么可能很难减少内存使用量...而无需重写应用程序。

最终,任何将大型数据集加载到内存中的应用程序在扩展到超出可用的物理RAM数量时都会遇到问题。

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

https://stackoverflow.com/questions/38323208

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文