1回复
2年前
tomcat进程环境变量,对于jni本地调用是否生效
问题本身是比较常见的GLIBC 64M内存问题, (参见https://xie.infoq.cn/article/e6fa07979e4375367ae9c2795)
常见的解决方案: 设置环境变量 MALLOC_ARENA_MAX=4 来控制glibc的内存分配块的上限
但由于涉及jni调用,包括了操作系统复杂的环境变量生效层级, 因此有以下疑问。
应用处理链路:
java web app(tomcat)-> jmaick库(java图片处理接口) -> (jni调用) imageMagick(操作系统本地图片处理软件) -> glibc(操作系统本地库) -> 内存分配器(默认ptmalloc,第三方tcmalloc/jemalloc) -> 分配本地内存 (堆外内存)
疑问:
admin用户启动tomcat,进程的环境变量(MALLOC_ARENA_MAX=4)(非全局变量),是否能够有效控制内存分配上限?
jni调用中,环境变量生效机制是什么样的?
742 阅读