我试图在没有挂载/ proc的chroot环境中构建一个java应用程序(调用javac)。在吐出以下警告后,Javac挂起:
Java HotSpot(TM)64位服务器VM警告:无法检测到初始线程堆栈位置 - find_vma失败
我不知道这个警告是否与悬挂相关,但是它一直被记录下来。我查看了jvm源代码,我可以理解这个警告是什么(在尝试查找主线程的堆栈基础时,/ proc / self / maps不可用)。
应该注意的是,有时我会发生崩溃而不是悬挂,但它大部分时间都会挂起。
我想知道是否有人让java工作没有 / proc挂载。所有可用的文献都建议安装/ proc。
答案 0 :(得分:0)
我认为通常你会希望在你的chroot环境中安装/ proc ...通常在Linux / proc中用于过程信息和有关各种过程有用的系统信息。 JVM做了很多" Magical"事情因为它也是一个虚拟机,所以它需要大量关于流程和事情的信息,所以如果没有proc就行不通,这并不奇怪。
从我读过的关于OpenJDK的JVM如何工作的内容来看,对于Unix(类似)系统,他们使用procfs来获取信息。所以它似乎是强制性的。
您认为自己不想要/ proc是否有理由?