我试图在我的Android应用程序中创建一个.map文件来使用它。我的观点是借助mapsforge库在屏幕上显示地图。库需要.map文件。问题是使用osmosis mapfilewriter插件生成它。当我使用命令
时./osmosis --rx file=/home/user/poland.osm --mw file=result.map bbox=51.09,16.9,51.14,17
我得到了
SEVERE: Thread for task 1-rx failed
java.lang.OutOfMemoryError: Java heap space
我尝试使用另一个参数顺序,但它也不起作用。我也尝试使用-Xmx1200m
选项来增加javas堆内存,但内存使用情况也是如此,并没有帮助。
我很感激你的帮助。
答案 0 :(得分:2)
使用参数type=hd
。
type
参数有两个选项ram
和hd
。虽然我没有看到文档没有明确说明hd的含义,但我猜它意味着“硬盘”,这意味着它会将数据卸载到磁盘上,而不是将其全部保存在内存中。
结果命令将是:
./osmosis --rx file=/home/user/poland.osm --mw file=result.map bbox=51.09,16.9,51.14,17 type=hd
答案 1 :(得分:1)
如果你有足够的内存,你需要告诉Java它(否则它只会使用有限的数量);但这不是直接传给渗透的论据。
在Windows上,您可以关注this advice given by Emilie Laffray on the OSM-dev list:
在osmosis.bat中是以下行... REM#JAVACMD_OPTIONS - The 附加到java命令的选项,通常用于修改jvm 最大内存等设置。
所以,要么修改osmosis.bat,要么创建一个名为osmosis.bat的新文件 在所有用户配置文件目录或您的配置文件目录中 包括'set JAVACMD_OPTIONS = -Xmx1024M'行(设置最大值 内存使用量为1GB,如果你有足够的RAM)......
在Linux上(我也假设是Mac OS X),您可以创建文件~/.osmosis
包含行
JAVACMD_OPTIONS=-Xmx1024M
将在启动时通过渗透加载。请注意,上面的两个示例都使用值1024M
,即您允许Java访问1024 MB的RAM - 您可以使用不同的值,具体取决于您的系统。