1. java为什么要设置环境变量,JAVA
一、原因是:配置java环境变量是为了能在运行-cmd-中用java命令来编译和运行java代码。在我们的window系统中,安装的软件都有路径的。如果我们不配置环境变量的话,我们就只能在jdk的安装路径下才能运行。换到了其它的路径就不行了,系统就会提示找不到路径,为了能在任务路径下都可以运行jdk,我们就要配置环境变量。二、如何设置环境变量首先,先安装了java的JDK,接下来配置环境变量的步骤如下:1、点击“计算机”的“属性”选项,选择“高级系统设置”;2、点击“高级系统设置”后,在弹出的对话框中点击“环境变量”;3、点击系统变量下面的新建按钮,在弹出的对话框中输入变量名为“Java_Home”,变量值为jdk的安装位置(如C:\Program Files\Java\jdk1.7.0_07),之后点击确定;4、选中系统变量中的“Path”变量,点击编辑按钮;5、在弹出的编辑框中的“变量值”一栏的最前面添加“%Java_Home%\bin;%Java_Home%\jre\bin;”,之后点击确定按钮;6、之后再点击系统变量下面的新建按钮,在弹出的对话框中输入变量名为“ClassPath”,变量值为“.;%Java_Home%\bin;%Java_Home%\lib\dt.jar;%Java_Home%\lib\tools.jar”;7、这样环境变量的配置就已经完成了。
2. java no XXX in java.library.path鎬庝箞閰嶇疆
java no XXX in java.library.path閰嶇疆鏈変互涓7姝ワ細
1銆丣ava鏈変袱涓狿ath锛屼竴涓鏄痗lasspath锛屽彟澶栦竴涓猯ibrary.path銆俢lasspath鏄璁剧疆JDK鐨刲ib浣嶇疆銆傝宭ibrary.path鏄璁剧疆寮曠敤鐨勯潪Java绫诲寘锛堝侱LL锛孲O锛夌殑浣嶇疆銆傚叿浣揈clipse璁剧疆鏂规硶瑙佷笅闈㈣剧疆銆
2銆佸彸鍑婚」鐩锛屼粠寮瑰嚭鐨勫彸閿鑿滃崟涓閫夋嫨鈥淧roperties鈥濓紝鎴栬呮寜Alt+Enter閿銆
7銆佸湪涓婇潰鐨刅M鍙傛暟涓鍐欏叆-Djava.library.path=c://**//***.dll锛岀瓑鍙蜂細鍚庢槸鍏蜂綋鐨凞LL璺寰勩
3. Java里如何添加自定义的配置文件,jsP里去读取参数
java里可以再在resources里面新建一个XML file或者 file文件XML file 会自动生成XML头,在下面加入内容就可以了,首先要有一个根节点,然后如果需要用到一些类,如:spring的一些类,就需要引入包,如:<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/beans"xmlns:mvc="http://www.springframework.org/schema/mvc"xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd"><context:component-scan base-package="com.dist.*.controller" /> </beans >其中<?xml ……就是头,<beans 是根节点,下面的<content:……是内容。如果添加的事properties文件,格式如下:# 连接池配置pool.size = 2pool.max = 50然后jsp调用读取xml文件的方法去读取自重的内容就可以了。
4. 什么是JavaConfig
Java config是指基于java配置的spring。
Spring JavaConfig是Spring社区的产品,这一产品提供了配置Spring IOC容器的纯Java方法,有助于避免使用XML配置。
config在计算机的命令中是“配置”的意思,而在计算机中各类软件及系统都有类似CONFIG的文件,其中主要是系统或各软件的配置参数,如config.sys中记录了电脑系统启动时加载的配置参数。
JavaCofig的优点:
1、面向对象的配置:
由于配置被定义为JavaConfig中的类,因此用户可以充分使用Java中的面向对象功能。一个配置类可以继承另一个,重写它的@Bean方法等。
2、减少或者消除XML配置:
javaconfig为开发人员提供了一种纯Java的方法来配置与XML配置概念相似的Spring容器。
从技术角度来说,只使用javaconfig配置类来配置容器是可行的,但是实际开发中,很多场景都是javaconfig和xml配置共用是最方便,理想的。
3、类型安全和重构好:
javaconfig提供了一种类型安全的方法了来配置spring容器,由于Java5.0对泛型的支持,现在可以按类型而不是名称检索bean,不需要任何的强制转换或者基于字符串的查找。
5. 怎么动态给java注解参数赋值
动态赋值指的是在配置文件配置好然后在项目中动态读取?如果是这样的话:1.在xml文件中使用<context:property-placeholder location="”/>这种方式可以读取location指定位置对应的文件,引用的话使用${key}可以获取对应的数据和这种写法相同的还有<bean class=“com.spring….config.PropertyPlaceholderConfigurer”><property name=“locations"><array><value></value></array></property><bean>这种是用bean来加载配置文件,看起来更直观2.通过@Value注解读取配置这种方法也需要预先在xml文件中设定好配置文件的位置<bean id=“prop” class=“org.springframework.beans.factory.config.PropertiesFactoryBean”><property name=“locations”><array><value>classpath:.properties</value></array></property></bean>之后在java代码里面可以用#{prop.key}来获取对应的数据prop是bean的名字,key是配置文件的键。3.使用@PropertySource在springboot中,可以不需要xml文件来设置配置文件,在需要使用配置文件的类名字前加上@PropertySource(“locations")就可以读取指定位置的配置,在代码中使用@Value注解可以获取这些数据@Value(value = “${key}”)4.使用@ConfigurationProperties(prefix=“”)SpringBoot项目有时候会使用application.yml来存储配置信息,一般情况下这些数据的存储格式是a:key1:value1key2:value2这种嵌套方式,当然可以多层嵌套在需要使用配置文件的类上面使用@ConfigurationProperties(prefix=“a”)可以获取a标签下一层所有的配置的键值对。
6. 如何设置myeclipse的jvm启动参数
-Xint 设置jvm以解释模式运行,所有的字节码将被直接执行,而不会编译成本地码。-Xbatch 关闭后台代码编译,强制在前台编译,编译完成之后才能进行代码执行; 默认情况下,jvm在后台进行编译,若没有编译完成,则前台运行代码时以解释模式运行。-Xbootclasspath:bootclasspath 让jvm从指定路径(可以是分号分隔的目录、jar、或者zip)中加载bootclass,用来替换jdk的rt.jar;若非必要,一般不会用到;-Xbootclasspath/a:path 将指定路径的所有文件追加到默认bootstrap路径中;-Xbootclasspath/p:path 让jvm优先于bootstrap默认路径加载指定路径的所有文件;-Xcheck:jni 对JNI函数进行附加check;此时jvm将校验传递给JNI函数参数的合法性,在本地代码中遇到非法数据时,jmv将报一个致命错误而终止;使用该参数后将造成性能下降,请慎用。-Xfuture 让jvm对类文件执行严格的格式检查(默认jvm不进行严格格式检查),以符合类文件格式规范,推荐开发人员使用该参数。-Xnoclassgc 关闭针对class的gc功能;因为其阻止内存回收,所以可能会导致OutOfMemoryError错误,慎用;-Xincgc 开启增量gc(默认为关闭);这有助于减少长时间GC时应用程序出现的停顿;但由于可能和应用程序并发执行,所以会降低CPU对应用的处理能力。-Xloggc:file 与-verbose:gc功能类似,只是将每次GC事件的相关情况记录到一个文件中,文件的位置最好在本地,以避免网络的潜在问题。 若与verbose命令同时出现在命令行中,则以-Xloggc为准。-Xmsn 指定jvm堆的初始大小,默认为物理内存的1/64,最小为1M;可以指定单位,比如k、m,若不指定,则默认为字节。-Xmxn 指定jvm堆的最大值,默认为物理内存的1/4或者1G,最小为2M;单位与-Xms一致。-Xprof 跟踪正运行的程序,并将跟踪数据在标准输出输出;适合于开发环境调试。-Xrs 减少jvm对操作系统信号(signals)的使用,该参数从1.3.1开始有效; 从jdk1.3.0开始,jvm允许程序在关闭之前还可以执行一些代码(比如关闭数据库的连接池),即使jvm被突然终止; jvm 关闭工具通过监控控制台的相关事件而满足以上的功能;更确切的说,通知在关闭工具执行之前,先注册控制台的控制handler,然后对 CTRL_C_EVENT, CTRL_CLOSE_EVENT, CTRL_LOGOFF_EVENT, andCTRL_SHUTDOWN_EVENT这几类事件直接返回true。 但如果jvm以服务的形式在后台运行(比如servlet引擎),他能接 收CTRL_LOGOFF_EVENT事件,但此时并不需要初始化关闭程序;为了避免类似冲突的再次出现,从jdk1.3.1开始提供-Xrs参数;当此 参数被设置之后,jvm将不接收控制台的控制handler,也就是说他不监控和处理CTRL_C_EVENT, CTRL_CLOSE_EVENT, CTRL_LOGOFF_EVENT, orCTRL_SHUTDOWN_EVENT事件。-Xssn 设置单个线程栈的大小,一般默认为512k。 上面这些参数中,比如-Xmsn、-Xmxn……都是我们性能优化中很重要的参数;-Xprof、-Xloggc:file等都是在没有专业跟踪工具情况下排错的好手;在上一小节中提到的关于JProfiler的配置中就使用到了-Xbootclasspath/a:path;非Stable参数前面我们提到用-XX作为前缀的参数列表在jvm中可能是不健壮的,SUN也不推荐使用,后续可能会在没有通知的情况下就直接取消了;但是由于这些参数中的确有很多是对我们很有用的,比如我们经常会见到的-XX:PermSize、-XX:MaxPermSize等等;下面我们将就Java HotSpot VM中-XX:的可配置参数列表进行描述;这些参数可以被松散的聚合成三类:行为参数(Behavioral Options):用于改变jvm的一些基础行为;性能调优(Performance Tuning):用于jvm的性能调优;调试参数(DebuggingOptions):一般用于打开跟踪、打印、输出等jvm参数,用于显示jvm更加详细的信息;由于sun官方文档中对各参数的描述也都非常少(大多只有一句话),而且大多涉及OS层面的东西,很难描述清楚,所以以下是挑选了一些我们开发中可能会用得比较多的配置项,若需要查看所有参数列表,可以点击HotSpot VM SpecificOptions.查看原文;首先来介绍行为参数:参数及其默认值描述-XX:-DisableExplicitGC 禁止调用System.gc();但jvm的gc仍然有效-XX:+MaxFDLimit 最大化文件描述符的数量限制-XX:+ScavengeBeforeFullGC 新生代GC优先于Full GC执行-XX:+UseGCOverheadLimit 在抛出OOM之前限制jvm耗费在GC上的时间比例-XX:-UseConcMarkSweepGC 对老生代采用并发标记交换算法进行GC-XX:-UseParallelGC 启用并行GC-XX:-UseParallelOldGC 对Full GC启用并行,当-XX:-UseParallelGC启用时该项自动启用-XX:-UseSerialGC 启用串行GC-XX:+UseThreadPriorities 启用本地线程优先级上面表格中黑体的三个参数代表着jvm中GC执行的三种方式,即串行、并行、并发;串行(SerialGC)是jvm的默认GC方式,一般适用于小型应用和单处理器,算法比较简单,GC效率也较高,但可能会给应用带来停顿;并行(ParallelGC)是指GC运行时,对应用程序运行没有影响,GC和app两者的线程在并发执行,这样可以最大限度不影响app的运行;并发(ConcMarkSweepGC)是指多个线程并发执行GC,一般适用于多处理器系统中,可以提高GC的效率,但算法复杂,系统消耗较大;性能调优参数列表:参数及其默认值描述-XX:LargePageSizeInBytes=4m 设置用于Java堆的大页面尺寸-XX:MaxHeapFreeRatio=70 GC后java堆中空闲量占的最大比例-XX:MaxNewSize=size 新生成对象能占用内存的最大值-XX:MaxPermSize=64m 老生代对象能占用内存的最大值-XX:MinHeapFreeRatio=40 GC后java堆中空闲量占的最小比例-XX:NewRatio=2 新生代内存容量与老生代内存容量的比例-XX:NewSize=2.125m 新生代对象生成时占用内存的默认值-XX:ReservedCodeCacheSize=32m 保留代码占用的内存容量-XX:ThreadStackSize=512 设置线程栈大小,若为0则使用系统默认值-XX:+UseLargePages 使用大页面内存我们在日常性能调优中基本上都会用到以上黑体的这几个属性; 调试参数列表:参数及其默认值描述-XX:-CITime 打印消耗在JIT编译的时间-XX:ErrorFile=./hs_err_pid.log 保存错误日志或者数据到文件中-XX:-ExtendedDTraceProbes 开启solaris特有的dtrace探针-XX:HeapDumpPath=./java_pid.hprof 指定导出堆信息时的路径或文件名-XX:-HeapDumpOnOutOfMemoryError 当首次遭遇OOM时导出此时堆中相关信息-XX: 出现致命ERROR之后运行自定义命令-XX:OnOutOfMemoryError=";" 当首次遭遇OOM时执行自定义命令-XX:-PrintClassHistogram 遇到Ctrl-Break后打印类实例的柱状信息,与jmap -histo功能相同-XX:-PrintConcurrentLocks 遇到Ctrl-Break后打印并发锁的相关信息,与jstack -l功能相同-XX:-PrintCommandLineFlags 打印在命令行中出现过的标记-XX:-PrintCompilation 当一个方法被编译时打印相关信息-XX:-PrintGC 每次GC时打印相关信息-XX:-PrintGC Details 每次GC时打印详细信息-XX:-PrintGCTimeStamps 打印每次GC的时间戳-XX:-TraceClassLoading 跟踪类的加载信息-XX:-TraceClassLoadingPreorder 跟踪被引用到的所有类的加载信息-XX:-TraceClassResolution 跟踪常量池-XX:-TraceClassUnloading 跟踪类的卸载信息-XX:-TraceLoaderConstraints 跟踪类加载器约束的相关信息
7. 如何修改jvm启动参数
用java命令查看。用java -option进行修改参数。还有tomcat,eclipse启动时通过配置文件加载的。详细如下:安装Java开发软件时,默认安装包含两个文件夹,一个JDK(Java开发工具箱),一个JRE(Java运行环境,内含JVM),其中JDK内另含一个JRE。如果只是运行Java程序,则JRE已足够;而JDK则只有开发人员才用到。一、配置JVM内存1.配置JVM内存的参数-XmxJavaHeap最大值,默认值为物理内存的1/4,最佳设值应该视物理内存大小及计算机内其他内存开销而定;-XmsJavaHeap初始值,Server端JVM最好将-Xms和-Xmx设为相同值,开发测试机JVM可以保留默认值;2.如何配置JVM内存分配:(1)当在命令提示符下启动并使用JVM时(只对当前运行的类生效)java-Xmx128m-Xms64m-Xmn32m-Xss16mTest(2)当在集成开发环境下(如eclipse)启动并使用JVM时:第一种设置方法:在eclipse根目录下打开eclipse.ini,默认内容为(这里设置的是运行当前开发工具的JVM内存分配):-vmargs-Xms40m-Xmx256m-vmargs表示以下为虚拟机设置参数,可修改其中的参数值,,另外,eclipse.ini内还可以设置非堆内存,如:-XX:PermSize=56m,-XX:MaxPermSize=128m。此处设置的参数值可以通过以下配置在开发工具的状态栏显示:在eclipse根目录下创建文件options,文件内容为:org.eclipse.ui/perf/showHeapStatus=true修改eclipse根目录下的eclipse.ini文件,在开头处添加如下内容:-debugoptions-vmjavaw.exe重新启动eclipse,就可以看到下方状态条多了JVM信息。第二种设置方法:打开eclipse-窗口-首选项-Java-已安装的JRE(对在当前开发环境中运行的java程序皆生效)编辑当前使用的JRE,在缺省VM参数中输入:-Xmx128m-Xms64m-Xmn32m-Xss16m第三种设置方法:打开eclipse-运行-运行-Java应用程序(只对所设置的java类生效)选定需设置内存分配的类-自变量,在VM自变量中输入:-Xmx128m-Xms64m-Xmn32m-Xss16m注:如果在同一开发环境中同时进行了第二种和第三种设置,则第二种设置生效,第三种设置无效,如:开发环境的设置为:-Xmx256m,而类Test的设置为:-Xmx128m-Xms64m,则运行Test时生效的设置为:-Xmx256m-Xms64m(3)当在服务器环境下(如Tomcat)启动并使用JVM时(对当前服务器环境下所以Java程序生效):a.设置环境变量:变量名:CATALINA_OPTS变量值:-Xmx128m-Xms64m-Xmn32m-Xss16mb.打开Tomcat根目录下的bin文件夹,编辑catalina.bat,将其中的%CATALINA_OPTS%(共有四处)替换为:-Xmx128m-Xms64m-Xmn32m-Xss16m二、查看配置JVM内存信息Runtime.getRuntime().maxMemory();//最大可用内存,对应-XmxRuntime.getRuntime().freeMemory();//当前JVM空闲内存Runtime.getRuntime().totalMemory();//当前JVM占用的内存总数,其值相当于当前JVM已使用的内存及freeMemory()的总和关于maxMemory(),freeMemory()和totalMemory():maxMemory()为JVM的最大可用内存,可通过-Xmx设置,默认值为物理内存的1/4,设值不能高于计算机物理内存;totalMemory()为当前JVM占用的内存总数,其值相当于当前JVM已使用的内存及freeMemory()的总和,会随着JVM使用内存的增加而增加;freeMemory()为当前JVM空闲内存,因为JVM只有在需要内存时才占用物理内存使用,所以freeMemory()的值一般情况下都很小,而JVM实际可用内存并不等于freeMemory(),而应该等于maxMemory()-totalMemory()+freeMemory()。及其配置JVM内存分配。