[转帖]java -d 参数(系统属性) 和 环境变量

java,参数,系统,属性,环境变量 · 浏览次数 : 0

小编点评

**参数说明** -D参数:设置系统属性,将该参数的值设置到JVM中属性变量中。 -- 参数优先级最高,覆盖项目中配置的此项例如: springboot 项目中的 yaml 配置,可以通过此参数进行覆盖:-Dspring.datasource.password=123456可以覆盖:spring: datasource: password: 1234562. **位置** idea 设置:idea设置中的“项目设置”页面中会出现“系统属性”和“环境变量”两个页面,其中“系统属性”是指 JVM 中属性变量,而“环境变量”是操作系统层面的变量。 **系统属性与环境变量区别** - 系统属性是 JVM 中属性变量,存取系统级配置信息。 - 环境变量是操作系统层面的变量,存储在用户空间中,可被其他程序访问。 **脚本中的使用** 可以在脚本中使用`System.getProperty()`方法获取系统属性值,也可以使用`System.getenv()`方法获取环境变量值。例如: ```java // 获取系统属性值 String value = System.getProperty("we"); // 获取环境变量值 String param = System.getenv("uu"); ```

正文

https://www.cnblogs.com/limeiyang/p/16565920.html

 

1. -d 参数说明

通过 java -h 查看可知:

注意:
-D= : set a system property 设置系统属性。
如果value是一个包含空格的字符串,则必须将该字符串括在双引号中。
需要设置的是JVM参数而不是program参数
使用此参数的参数优先级最高,会覆盖项目中配置的此项

例如: springboot 项目中的 yaml 配置,可以通过此参数进行覆盖:
-Dspring.datasource.password=123456
可以覆盖:

spring:
  datasource:
    password: 123456

2. 其他相关参数

image

3. idea 设置的位置

image
image

4. 系统属性和环境变量的区别

  • 系统属性是指 JVM 中属性变量;环境变量是操作系统层面的变量
// 在java.lang.System这个类中提供了两个方法
getenv() // 获取操作系统中的环境变量
getProperties() // 获取 JVM 中的 系统属性
  • 变量的操作

环境变量的操作有两种方法

  1. 通过windows界面设置 变量会一直存在
  2. DOS命令set设置(这些变量只是在当前DOS环境中存在一旦关闭则消失)
    比如在脚本中添加 set parm=KKKK 则在当前操作界面就可以使用这个变量
    在当前脚本执行的程序中可以通过getenv("parm")来获得其值
    (注意一旦脚本运行完毕 或 DOS窗口关闭则这些的环境变量则也会取消 )

例子:

// 脚本内容
@echo off
set we=k
java zk

// zk.class的源码为
public class zk{
	public static void main(String[] args){
		String value = System.getenv("we");
		System.out.print(value);
	}
}

系统属性操作有两种方法

  1. 在程序中通过setProperty(key,name) getProperty(key)来设置
  2. 第二通过命令或脚本设置
    重点讲解这个因为在一些脚本语言中大家经常会无意见到这些设置
    却不理解是干什么用的,下面通过一个例子演示脚本中的使用
    Java 系统变量主要是用于给main方法传参数

用法如下:

// 命令格式
java -D= xx name:系统属性键 value:值  xx:java命令要运行的类名如果要设置多个参数
java -D= -D= ..xx name

// 脚本内容
@echo off
java -Duu="HelloWorld" ParamTest

// 注意:java -Duu=HelloWord ParamTest 去掉双引号也可以 但值不可包含空格否则
// 会把空格之后作为类名 如 Hello World 则会把World作为类名来处理

// ParamTest.class源码为:
public class ParamTest{
	public static void main(String[] args){
		String param = System.getProperty("uu");
		Systeem.out.print(param);
	}
}
//当在脚本或命令行执行命令时 结果为“HelloWorld”

5. 参考

https://www.jianshu.com/p/eda395fe12d1
系统属性和环境变量的区别

与[转帖]java -d 参数(系统属性) 和 环境变量 相似的内容:

[转帖]springboot指定端口的三种方式

https://blog.51cto.com/feirenraoyuan/5504099 第一配置文件中添加server.port=9090 第二在命令行中指定启动端口,比如传入参数 java -jar bootsample. jar -- server.port=9000 第三传入虚拟机系统属性

[转帖]【JVM系列JKD8】参数参考表

JVM是Java底层核心要素,可以说Java生态的东西都是运行在JVM里面的。From:https://docs.oracle.com/javase/8/docs/ JVM参数的含义 JVM参数说明 参数名称含义默认值-Xms初始堆大小物理内存的1/64(<1GB)默认(MinHeapFreeRat

[转帖]java -jar 参数说明

jvm 选项 Java启动参数共分为三类; 其一是标准参数(-),所有的JVM实现都必须实现这些参数的功能,而且向后兼容; 其二是非标准参数(-X),默认jvm实现这些参数的功能,但是并不保证所有jvm实现都满足,且不保证向后兼容; 其三是非Stable参数(-XX),此类参数各个jvm实现会有所不

[转帖]java启动jar包设置启动参数

目录 一、代码介绍 1.代码: 二、linux命令 1.命令 三、idea本地调试 1.找到Edit Configurations 2.修改Edit Configurations 参数 3.Edit Configurations 参数介绍 4.VM option 单个参数效果展示 5.VM opti

[转帖]JAVA之G1垃圾回收器

https://www.cnblogs.com/boanxin/p/12292331.html 概述 G1 GC,全称Garbage-First Garbage Collector,通过-XX:+UseG1GC参数来启用,作为体验版随着JDK 6u14版本面世,在JDK 7u4版本发行时被正式推出,

[转帖]Java 近期新闻:JEP 更新,GraalVM 贡献给 OpenJDK,JavaOne 重启

https://www.infoq.cn/article/kzzbQg5zgissaCcJlfey JEP 432记录模式(第二预览版)在上周从其 8294078 草案晋升为候选状态。相比 JEP 405 记录模式(预览版),该 JEP 更新了:对通用记录模式类型参数推断的支持、新增对记录模式出现在

[转帖]Java方法的JIT编译

https://www.jianshu.com/p/a6275e239eac Java方法执行一般会利用分层编译,先通过c1解释执行。方法执行编译等级逐渐提升,有机会通过JIT编译为特定平台汇编执行,以此获得最好的性能。 方法执行除了达到一定热度外,是否JIT编译也受到以下两个参数影响: -XX:+

[转帖]Java 类加载器

类的生命周期和加载过程 在Java中数据类型分为基本数据类型和引用数据类型。基本数据类型由虚拟机预先定义,引用数据类型则需要进行类的加载。引用类型,Java 将其细分为四种:类、接口、数组类和泛型参数。由于泛型参数会在编译过程中被擦除,因此 Java 虚拟机实际上只有前三种。在类、接口和数组类中,数

[转帖]linux查看java堆栈信息_linux进程堆栈大小

https://www.cnblogs.com/cloudHui/p/17076184.html 1、查看JAVA进程JVM参数 jinfo -flags pid(进程号)-XX:CICompilerCount=2 最大的并行编译数-XX:InitialHeapSize=16777216 JVM 的

[转帖]jvm一般相关配置OutOfMemoryError关参数配置解释

一般运行java应用都会根据实际情况设置一些jvm相关运行参数 特别是有关内存和oom溢出等参数,方便后续问题定位和解决 如常用的以下配置 nohup java -Xms256m -Xmx24g -Xmn8g -verbose:gc -XX:+PrintGCDateStamps -XX:+Print