feat: 新增 java run,按 JDK 版本自动套用调优参数运行 Java 应用
- 自动识别 JDK 8/11/17/21 与宿主机 CPU、可用内存;容器内以 cgroup 限额为准;堆默认取可用内存 50%,-Xms 与 -Xmx 同值 - 按版本分支生成参数:JDK 8 用 -Xloggc 一组,JDK 9+ 用 -Xlog:; 堆超过 30g 时自动省略压缩指针参数 - 支持 --jdk/--java/--heap/--xms/--env/--gc-log/--heap-dump-on-oom/ --print-flags/--dry-run;jar 之后的参数原样交给应用 - 前台运行:stdio 直连、退出码透传、SIGINT/SIGTERM 转发给 JVM - BuiltinRequest 增加 Stdin,使内置命令可以读取调用方输入 - 修正帮助中的用法行重复(自定义 Usage 不再追加通用透传尾巴) - 文档:新增 README.java.md,主 README 补充导航与示例
This commit is contained in:
@@ -14,6 +14,7 @@ import (
|
||||
// in-process command implementation.
|
||||
type BuiltinRequest struct {
|
||||
Args []string
|
||||
Stdin io.Reader
|
||||
Stdout io.Writer
|
||||
Stderr io.Writer
|
||||
Info platform.Info
|
||||
@@ -42,6 +43,8 @@ var builtins = map[string]Builtin{
|
||||
"docker.save": runDockerSave,
|
||||
"docker.stats": runDockerStats,
|
||||
"docker.stop": runDockerStop,
|
||||
"java.run": runJavaRun,
|
||||
"java.run.preview": runJavaPreview,
|
||||
"net.pids": runNetPIDs,
|
||||
"net.ports": runNetPorts,
|
||||
"proc.nohup": runNohup,
|
||||
@@ -72,7 +75,7 @@ func Preview(ctx context.Context, plan Plan, w io.Writer) error {
|
||||
return fmt.Errorf("未注册的确认动作 %q", name)
|
||||
}
|
||||
// Build the list in memory first: a target that fails to resolve must not
|
||||
// leave a dangling "将影响:" heading behind.
|
||||
// leave a dangling heading behind.
|
||||
var buf bytes.Buffer
|
||||
if err := fn(ctx, BuiltinRequest{
|
||||
Args: plan.ExtraArgs,
|
||||
@@ -83,7 +86,11 @@ func Preview(ctx context.Context, plan Plan, w io.Writer) error {
|
||||
}); err != nil {
|
||||
return err
|
||||
}
|
||||
fmt.Fprintln(w, "将影响:")
|
||||
// Only destructive commands act on a list of objects; other previews (such
|
||||
// as the java command line) already carry their own heading.
|
||||
if plan.Result.Command != nil && plan.Result.Command.RequiresYes {
|
||||
fmt.Fprintln(w, "将影响:")
|
||||
}
|
||||
_, err := w.Write(buf.Bytes())
|
||||
return err
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user