-
Notifications
You must be signed in to change notification settings - Fork 1.6k
INSTALL
oldmanpushcart@gmail.com edited this page Jan 26, 2023
·
4 revisions
- JDK[6,11]
- Linux/UNIX/MacOS;暂不支持Windows,主要是一些脚本需要改造
-
首先需要下载最新稳定版本
-
下载完成并解压之后,在sandbox目录下执行安装脚本./install-local.sh -p /Users/luanjia/pe,-p指定沙箱的安装目录。如若不指定,默认的安装目录是${HOME}/.opt
cd sandbox ./install-local.sh
-
成功安装会有以下输出。安装指定安装目录之后,沙箱脚本的工作目录将为你所指定的安装目录。
VERSION=1.2.0 PATH=/Users/luanjia/pe/sandbox install sandbox successful.
沙箱有两种启动方式:ATTACH
和AGENT
即插即用的启动模式,可以在不重启目标JVM的情况下完成沙箱的植入。原理和GREYS、BTrace类似,利用了JVM的Attach机制实现。
# 假设目标JVM进程号为'2343'
./sandbox.sh -p 2343
如果输出
NAMESPACE : default
VERSION : 1.2.0
MODE : ATTACH
SERVER_ADDR : 0.0.0.0
SERVER_PORT : 55756
UNSAFE_SUPPORT : ENABLE
SANDBOX_HOME : /Users/luanjia/pe/sandbox
SYSTEM_MODULE_LIB : /Users/luanjia/pe/sandbox/module
USER_MODULE_LIB : ~/.sandbox-module;
SYSTEM_PROVIDER_LIB : /Users/luanjia/pe/sandbox/provider
EVENT_POOL_SUPPORT : DISABLE
则说明启动成功,沙箱已经顺利植入了目标JVM中,并完打开了HTTP端口55756
,完成系统模块sandbox-mgr-module.jar 的加载。
有些时候我们需要沙箱工作在应用代码加载之前,或者一次性渲染大量的类、加载大量的模块,此时如果用ATTACH方式加载,可能会引起目标JVM的卡顿或停顿(GC),这就需要启用到AGENT的启动方式。
假设SANDBOX被安装在了/Users/luanjia/pe/sandbox,需要在JVM启动参数中增加上
-javaagent:/Users/luanjia/pe/sandbox/lib/sandbox-agent.jar
这样沙箱将会伴随着JVM启动而主动启动并加载对应的沙箱模块。
JVM沙箱偏向于底层产品,受众面比较窄,问题反馈沟通很可能会因为各种原因造成不及时。所以我们建立了一个钉钉小群,方便大家在这里进行沟通。