
点击设置-参数设置进行设置。
PojavLauncher启动器最新版本是一款功能十分强大的手机版Java启动器应用,使用这款软件可以启动我的世界的所有版本,支持服务器自定义ip,能够修改游戏画质好,能够自定义游戏参数。
解压后把所有文件放到有自开发带main的主class的jar包所在的目录下 ,修改launcher目录下launcherproperties配置文件 main代表Main-Class 路径,如:testTest classpath指定Class-Path路径,可以多个。
java启动参数共分为三类;
其一是 标准参数 (-),所有的JVM实现都必须实现这些参数的功能,而且向后兼容;
其二是 非标准参数 (-X),默认jvm实现这些参数的功能,但是并不保证所有jvm实现都满足,且不保证向后兼容;
其三是 非Stable参数 (-XX),此类参数各个jvm实现会有所不同,将来可能会随时取消,需要慎重使用;
1设置环境变量JAVA_OPTS
2Windows下,在/bin/catalinabat,Unix下,在/bin/catalinash的前面,增加 JAVA_OPTS=’-Xms256m -Xmx512m’
Tomcat 的启动参数位于安装目录 ${TOMCAT_HOME}/bin目录下, Linux *** 作系统就是 catalinash 文件。JAVA_OPTS,就是用来设置 JVM 相关运行参数的变量,还可以在 CATALINA_OPTS 变量中设置。关于这 2 个变量,还是多少有些区别的:
JAVA_OPTS:用于当 Java 运行时选项“start”、“stop”或“run”命令执行。
CATALINA_OPTS:用于当 Java 运行时选项“start”或“run”命令执行。
为什么有两个不同的变量?它们之间都有什么区别呢?
首先,在启动 Tomcat 时,任何指定变量的传递方式都是相同的,可以传递到执行“start”或“run”命令中,但只有设定在 JAVA_OPTS 变量里的参数被传递到“stop”命令中。对于 Tomcat 运行过程,可能没什么区别,影响的是结束程序,而不是启动程序。
第二个区别是更微妙,其他应用程序也可以使用 JAVA_OPTS 变量,但只有在 Tomcat 中使用 CATALINA_OPTS 变量。如果你设置环境变量为只使用 Tomcat,最好你会建议使用 CATALINA_OPTS 变量,而如果你设置环境变量使用其它的 Java 应用程序,例如 JBoss,你应该把你的设置放在JAVA_OPTS 变量中。
我在本地配置的:
其他暂时没用到的:
Xms与Xmx配置相同的值,为了能够在GC后不需要重新分隔计算堆区的大小而浪费资源。
JVM系列四:生产环境参数实例及分析生产环境实例增加中
jvm的GC日志分析
JVM常用参数配置
深入了解JVM
JVM参数与实际环境中的优化配置实践
JVM启动参数大全
Java服务GC参数调优案例
关键业务系统的JVM参数推荐(2018仲夏版)
成为Java GC专家(5)—Java性能调优原则
给出一个windows下dll的实例。linux下a的静态库只是头文件和编译有所不同,另外需要将编译后的动态库文件放入/usr/lib下,使用ldconfig载入。
一 先制作一个系统中有的DLL文件(cpp给出的sdk接口)
既然是测试我们就把我们这个dll叫做testDll吧,为了简单其间,我只写一个add方法,就是简单的2个数字相加,对于真正的开发中我们肯定会遇到其他类型,java到c/cpp中类型需要转换,具体类型转换对应关系g一下就能得到,我也不在列举。c/cpp中一个class一般包含2个文件,一个头文件定义(h),一个文件主体(c/cpp)。啰嗦了这么多还是直接动手吧,先在vs2008中建立一个工程(当然你也可以直接编写不用这些IDE工具,gcc g++的命令自己g。下同,不在注释不在废话),选取win32工程
键入工程名字testDll,点击next选取DLL,然后点击完成
打开我们的testdllcpp,添加进我们的add方法
C++代码
1int add(int a,int b){
2 return a+b;
3}
int add(int a,int b){
return a+b;
}
注意到文件列表里并没有testDllh,因为我们要给出调用者一个接口,如果不给头文件,人家就没办法调用,所以我们就必须添加一个头文件testDllh。
C++代码
1#ifdef TEST_DLL
2#define TEST_API __declspec(dllexport)
3#else
4#define TEST_API __declspec(dllimport)
5#endif
6
7/ Set up for C function definitions, even when using C++ /
8#ifdef __cplusplus
9extern "C" {
10#endif
11
12TEST_API int add(int,int);
13
14/ Ends C function definitions when using C++ /
15#ifdef __cplusplus
16}
17#endif
#ifdef TEST_DLL
#define TEST_API __declspec(dllexport)
#else
#define TEST_API __declspec(dllimport)
#endif
/ Set up for C function definitions, even when using C++ /
#ifdef __cplusplus
extern "C" {
#endif
TEST_API int add(int,int);
/ Ends C function definitions when using C++ /
#ifdef __cplusplus
}
#endif
在这个头文件中我们把我们的add方法给定义了进去。注意到testdllcpp中#include "stdafxh",所以我们就把这个testDllh include进stdafxh里面。
按道理说我们的这个dll已经完成了,但是一般c/cpp给接口SDK的时候大都给h和lib,为了一步生成dll和lib,我们添加进一个testDlldef,有了这个文件就可以一步生成dll和lib。在source file里右键add new item ,选择Module-Definition File
键入testDll,OK了,我们可以直接build了。生成testDlldll和testDlllib。
把testDlldll扔到system32目录里等待我们高大威猛的java jni调用。
二 JNI
21 编写java文件
为了显示我们的与众相同,我们就把我们的这个java文件命名为Demojava顺便直接带上包名
,因为我们知道人家给我们的接口里有个add方法,所以我们就直接来个调用吧。
Java代码
1package comtestJnitestDemo;
2
3public class Demo {
4 static
5 {
6 //Systemoutprintln(SystemgetProperty("javalibrarypath"));
7 SystemloadLibrary("testDll");
8 SystemloadLibrary("jniDll");
9 }
10 public native static int add(int a,int b);
11
12}
package comtestJnitestDemo;
public class Demo {
static
{
//Systemoutprintln(SystemgetProperty("javalibrarypath"));
SystemloadLibrary("testDll");
SystemloadLibrary("jniDll");
}
public native static int add(int a,int b);
}
demojava代码暂时如此,我们把将要生成的jni的dll叫做jniDll,有童鞋讲,我不想用你这个烂名字jniDll多俗啊,没关系,你可以换,随你换,生成文件后你再换也可以,现在换也可以。
22 生成h头文件
javah命令,不多讲。生成的文件com_testJni_testDemo_Demoh这个文件的命名规则我就不多讲了,一目了然。
C++代码
1/ DO NOT EDIT THIS FILE - it is machine generated /
2#include <jnih>
3/ Header for class com_testJni_testDemo_Demo /
4
5#ifndef _Included_com_testJni_testDemo_Demo
6#define _Included_com_testJni_testDemo_Demo
7#ifdef __cplusplus
8extern "C" {
9#endif
10/
11 Class: com_testJni_testDemo_Demo
12 Method: add
13 Signature: (II)I
14 /
15JNIEXPORT jint JNICALL Java_com_testJni_testDemo_Demo_add
16 (JNIEnv , jclass, jint, jint);
17
18#ifdef __cplusplus
19}
20#endif
21#endif
/ DO NOT EDIT THIS FILE - it is machine generated /
#include <jnih>
/ Header for class com_testJni_testDemo_Demo /
#ifndef _Included_com_testJni_testDemo_Demo
#define _Included_com_testJni_testDemo_Demo
#ifdef __cplusplus
extern "C" {
#endif
/
Class: com_testJni_testDemo_Demo
Method: add
Signature: (II)I
/
JNIEXPORT jint JNICALL Java_com_testJni_testDemo_Demo_add
(JNIEnv , jclass, jint, jint);
#ifdef __cplusplus
}
#endif
#endif
23 用c/cpp实现这个头文件
c/cpp中已经实现了这个add方法,我们只需要调用就可以啦。所以直接vs2008中建立一个dll工程,工程名我们就叫jniDll,具体过程不再多讲,方法同上面testDll的建立一样。在这个工程里kimmking把需要引用的包、文件等已经讲的很清楚了。打开jniDllcpp,添加下面代码
C++代码
1JNIEXPORT jint JNICALL Java_com_testJni_testDemo_Demo_add
2(JNIEnv env,jclass jobject,jint a,jint b){
3
4 return add(a,b);
5}
JNIEXPORT jint JNICALL Java_com_testJni_testDemo_Demo_add
(JNIEnv env,jclass jobject,jint a,jint b){
return add(a,b);
}因为int对应的类型就刚好是jint,所以就不需要转换,其他需要转换的类型自己g对应关系转换,注意释放。
这个工程里我们还需要打开 stdafxh添加
C++代码
1#include <jnih>
2
3#include "testDllh"
4#include "com_testJni_testDemo_Demoh"
#include <jnih>
#include "testDllh"
#include "com_testJni_testDemo_Demoh"
在编译这个jniDll工程的时候需要引入testDllh,com_testJni_testDemo_Demoh,另外添加testDlllib这个依赖。
好了做好这些后,build下,生成了我们期待已久的jniDlldll,把这个dll同样扔到system32下。
三 测试
本人特懒,不想写多余的class,所以直接修改Demojava 这也是刚才为什么讲暂时如此的原因
Java代码
1package comtestJnitestDemo;
2
3public class Demo {
4 static
5 {
6 //Systemoutprintln(SystemgetProperty("javalibrarypath"));
7 SystemloadLibrary("testDll");
8 SystemloadLibrary("jniDll");
9 }
10 public native static int add(int a,int b);
11 public static void main(String[] args) {
12 Systemoutprintln(add(7,2));
13 }
14}
package comtestJnitestDemo;
public class Demo {
static
{
//Systemoutprintln(SystemgetProperty("javalibrarypath"));
SystemloadLibrary("testDll");
SystemloadLibrary("jniDll");
}
public native static int add(int a,int b);
public static void main(String[] args) {
Systemoutprintln(add(7,2));
}
}
四 最后补充
如果系统已经加载过c/cpp的dll,我们就不用再SystemloadLibrary("testDll")了,加载一遍就可以了,因为我们刚才写的testDll系统没有加载,所以我就加载了一下。对于多个dll可以写多个SystemloadLibrary去加载,修改static{}里面的内容不需要重新生成dll,除非你多加了一个调用方法,如果你看清楚规则,就不用javah命令就可以直接编写头文件,用javah太麻烦了。
假设这JSP叫 indexjsp,自己提交给自己
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<html>
<body>
<form id="test" method="post" action="indexjsp">
<select id="code" name="plugin">
<option value="1cn">cn</option>
<option value="2us">us</option>
<option value="3en">en</option>
</select>
<input type="submit" value="提交">
<br>
<%outprintln(requestgetParameter("plugin")); %>
</form>
</body>
</html>
请采纳
如果用命令的方式运行java程序,在运行命令后面添加参数值即可,例如:
普通java运行命令:java helloworld
加参数运行命令:java helloworld 张三
普通java运行命令:java -jar testjar
加参数运行命令:java -jar testjar 张三
张三就是第一个参数,第二个参数依次挂在后面即可,在mian函数的args参数中可以获取到的。
如果是eclipse这样的开发环境,应该可以找到配置程序启动参数的地方。例如:
elipse配置方式为:Run As-->Run Configurations->Arguments->Program arguments 中输入 参数值即可,空格隔开。
其他开发工具类似。
提示写的很清楚了,你的代码里有内存溢出,可能是某个request没有返回,或者是资源没有释放。检查一下你的代码,或者设置tomcat的contextxml,将unloadDelay设成2000或者5000
用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根目录下打开eclipseini,默认内容为(这里设置的是运行当前开发工具的JVM内存分配):
-vmargs-Xms40m-Xmx256m-vmargs表示以下为虚拟机设置参数,可修改其中的参数值,,另外,eclipseini内还可以设置非堆内存,如:-XX:PermSize=56m,-XX:MaxPermSize=128m。
此处设置的参数值可以通过以下配置在开发工具的状态栏显示:
在eclipse根目录下创建文件options,文件内容为:orgeclipseui/perf/showHeapStatus=true
修改eclipse根目录下的eclipseini文件,在开头处添加如下内容:
-debugoptions-vmjavawexe重新启动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-Xss16m
b打开Tomcat根目录下的bin文件夹,编辑catalinabat,将其中的%CATALINA_OPTS%(共有四处)替换为:-Xmx128m-Xms64m-Xmn32m-Xss16m
二、查看配置JVM内存信息
RuntimegetRuntime()maxMemory();//最大可用内存,对应-Xmx
RuntimegetRuntime()freeMemory();//当前JVM空闲内存
RuntimegetRuntime()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内存分配。
Eclipse启动参数配置
eclipseexe -vmargs -Xverify:none -XX:+UseParallelGC -XX:PermSize=20M -Xms64M -Xmx256M
将工作空间位置设置为在当前工作目录内
在此方案中,工作空间位置将是当前工作目录中称为workspace的目录。
实现此目的最容易的方法可能是使用下列步骤来创建快捷方式:
浏览至 Windows 资源管理器中的 eclipseexe 并使用右键拖动来创建 eclipseexe 的快捷方式。
编辑快捷方式的属性,以使启动位置:字段标识工作空间位置的父目录(例如,c:/users/robert)。
关闭属性对话框并双击快捷方式(如果提供的目录为c:/users/robert,则工作空间位置将为c:/users/robert/workspace)。
当然,您也可以使用命令提示符(通过将目录切换为工作空间父目录然后运行 eclipseexe)来获得同样的效果。
使用 -data 设置工作空间的特定位置
要使用-data命令行自变量,只要将-datayour_workspace_location(例如,-data c:/users/robert/myworkspace)添加至快捷方式属性中的目标字段或显式地将它包括在命令行上。
使用 -vm 设置 java VM
建议显式指定在运行 Eclipse 时要使用哪个 Java VM。使用-vm命令行自变量(例如,-vm c:/jre/bin/javawexe)可以实现此目的。如果不使用-vm,则 Eclipse 将使用在 O/S 路径上找到的一个 Java VM。当安装其它产品时,它们可更改您的路径,导致在下一次启动 Eclipse 时使用另一 Java VM。
运行 Eclipse 中的高级主题
Eclipse 可执行文件及平台本身提供了人们感兴趣的开发或调试 Eclipse 各部件的许多执行选项。这是常用选项列表,有关完整列表,请参阅 Platform Plug-in Developer Guide 中的 Eclipse 运行时选项页面。运行 Eclipse 可执行文件的一般格式是:
eclipse [platform options] [-vmargs [Java VM arguments]]
Eclipse 启动参数
命令描述
原因
-arch architecture
定义 Eclipse 平台在其上运行的处理器体系结构。Eclipse 平台通常使用 Javaosarch属性的常用值来计算最佳设置。如果在此处指定该项,则这是 Eclipse 平台使用的值。此处指定的值可作为 BootLoadergetOSArch() 用于插件。示例值有:“x86”、“sparc”、“PA-RISC”和“ppc”。
20
-application applicationId
要运行的应用程序。应用程序由向 orgeclipsecoreruntimeapplications 扩展点提供扩展的插件来声明。通常不需要此自变量。如果指定了此项,则该值会覆盖配置提供的值。如果不指定此项,则会运行“Eclipse 工作台”。
10
-configuration configurationFileURL
Eclipse 平台配置文件的位置,表示为 URL。配置文件确定 Eclipse 平台、可用插件集和主要功能部件的位置。注意,不允许使用相对 URL。当安装或更新 Eclipse 平台时配置文件被写至此位置。
20
-consolelog
将 Eclipse 平台的错误日志镜像到用来运行 Eclipse 的控制台。与-debug组合时很方便使用。
10
-data workspacePath
要运行 Eclipse 平台的工作空间的路径。工作空间位置也是项目的缺省位置。相对于从中启动 eclipse 的目录来解释相对路径。
10
-debug [optionsFile]
将平台置于调试方式,并从给定位置处的文件装入调试选项(如果指定的话)。此文件指示哪些调试点可用于插件以及是否已启用它们。如果未给出文件位置,则平台在启动 eclipse 的目录中查找称为“options”的文件。URL 和文件系统路径都可作为文件位置。
以上就是关于pojavlauncher怎么设置java参数全部的内容,包括:pojavlauncher怎么设置java参数、CMS GC启动参数优化配置、java 如何调用一个已经存在的静态库,并输入和获取参数! 例如:静态库中已经存在函数 ret=ys_tpcall(aa);等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)