perfjava的简单介绍

博主:adminadmin 2022-11-22 09:02:09 58

今天给各位分享perfjava的知识,其中也会对进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!

本文目录一览:

如何修改java虚拟机内存

一、设置JVM内存设置

1. 设置JVM内存的参数有四个:

-Xmx Java Heap最大值,默认值为物理内存的1/4,最佳设值应该视物理内存大小及计算机内其他内存开销而定;

-Xms Java Heap初始值,Server端JVM最好将-Xms和-Xmx设为相同值,开发测试机JVM可以保留默认值;

-Xmn Java Heap Young区大小,不熟悉最好保留默认值;

-Xss 每个线程的Stack大小,不熟悉最好保留默认值;

2. 如何设置JVM内存分配:

(1)当在命令提示符下启动并使用JVM时(只对当前运行的类Test生效):

java -Xmx128m -Xms64m -Xmn32m -Xss16m Test

(2)当在集成开发环境下(如eclipse)启动并使用JVM时:

a. 在eclipse根目录下打开eclipse.ini,默认内容为(这里设置的是运行当前开发工具的JVM内存分配):

-vmargs

-Xms40m

-Xmx256m

-vmargs表示以下为虚拟机设置参数,可修改其中的参数值,也可添加-Xmn,-Xss,另外,eclipse.ini内还可以设置非堆内存,如:-XX:PermSize=56m,-XX:MaxPermSize=128m。

此处设置的参数值可以通过以下配置在开发工具的状态栏显示:

在eclipse根目录下创建文件options,文件内容为:org.eclipse.ui/perf/showHeapStatus=true

修改eclipse根目录下的eclipse.ini文件,在开头处添加如下内容:

-debug

options

-vm

javaw.exe

重新启动eclipse,就可以看到下方状态条多了JVM信息。

b. 打开eclipse-窗口-首选项-Java-已安装的JRE(对在当前开发环境中运行的java程序皆生效)

编辑当前使用的JRE,在缺省VM参数中输入:-Xmx128m -Xms64m -Xmn32m -Xss16m

c. 打开eclipse-运行-运行-Java应用程序(只对所设置的java类生效)

选定需设置内存分配的类-自变量,在VM自变量中输入:-Xmx128m -Xms64m -Xmn32m -Xss16m

注:如果在同一开发环境中同时进行了b和c设置,则b设置生效,c设置无效,如:

开发环境的设置为:-Xmx256m,而类Test的设置为:-Xmx128m -Xms64m,则运行Test时生效的设置为:

-Xmx256m -Xms64m

(3)当在服务器环境下(如Tomcat)启动并使用JVM时(对当前服务器环境下所以Java程序生效):

a. 设置环境变量:

变量名:CATALINA_OPTS

变量值:-Xmx128m -Xms64m -Xmn32m -Xss16m

b. 打开Tomcat根目录下的bin文件夹,编辑catalina.bat,将其中的�TALINA_OPTS%(共有四处)替换为:-Xmx128m -Xms64m -Xmn32m -Xss16m

如何集成Perf4j到Java应用程序中并生成性能数据

在实际部署的生产环境能够以较低的风险及成本实现对业务逻辑级别性能问题的追踪。本文将介绍如何集成 Perf4j 到 Java 应用程序中并生成性能数据。

系统日志是应用程序问题诊断及运行维护的重要工具。Logback、Log4j 是常用于 Java 平台的日志记录 API. 目前大部分产品只是将系统重要参数、状态的变化及异常信息通过日志输出。本文将要介绍的 Perf4j 是一款专

门用于 Java 服务器端代码计时、记录日志和监控结果的开源工具包。Perf4j

对常用日志工具包进行了扩展,能够将得到的原始性能数据进行统计并发布到可定制的输出源,如控制台、日志文件、JMX 等。Perf4j

提供了多种方式与 Java 代码集成,开发和系统维人员能够灵活地将 Perf4j 的 API 嵌入到各种不同架构的应用程序中。

Perf4j 目前依托于开源项目协作平台 Codehaus 进行文档及代码管理,下一步该项目计划迁移到 Github

平台,以便更多的社区及开发人员可以参与到开发及维护中来。Perf4j 欢迎使用者提出新的功能需求并且鼓励将定制或扩展的代码贡献到 Perf4j

源码中。本文中示例代码使用的 Perf4j 版本是 0.9.16,读者需在下载类包或配置 Maven 时留意。

阅读文章之前,您要对 Java 注解、JMX、面向方面编程有一些了解。特别是 JConsole 的使用及 Spring AOP 的配置方式要较为熟悉。

文章首先阐明在何种应用场景下应优先考虑使用 Perf4j。然后是具体讲解 Pef4j 与应用程序的集成方式。最后会介绍如何将收集的数据生成便于分析的可视化图表。

应用场景

在 Java 平台上遇到性能问题时,如 CPU 占用过高、系统响应缓慢,通常的分析方法是使用 JVM

剖析工具在系统瓶颈临界点前一段时间抓取 CPU 占用分布,再对 CPU 占用率最高的几个方法排查。Perf4j

的优势在于能够持续跟踪统计所关注功能代码的执行效率,对于前后两个版本出现较大差异的方法进行深入分析,可以在开发周期中尽早发现问题。Perf4j 还可以用在产品环境中,从运营的早期开始,将其统计的数据做为系统的性能和健康指标长期监测。

首选 Perf4j 的应用场景:

Java 本地代码调用(JNI) 分布式系统、集群部署 面向服务体系结构(SOA) 远程方法调用(RMI)

开发人员必须将本地方法、远程方法及 Web services 的性能问题隔离出来,以防干扰对 Java 应用程序本身的分析。通过日志记录则是最简单的方式;采用分布式架构或集群部署的系统相对复杂,不同的网络环境、基础硬件和操作系统的差异、虚拟主机中资源与配置的差异等造成很难采用统一的工具来监测代码级别的性能指标。而日志记录则可以轻松加入到各种程序中,且是资源与时间成本最低的方式。Perf4j 提供了 CSV 格式的转换工具,开发人员可以借助第三方工具方便地将统计结果汇总分析。

集成到应用程序

下面将分两种方式具体讲述如何利用 Per4j 提供的 API。在实际的项目中,应根据现有的程序框架及监测目的灵活选择。另外,针对 WebSphere 应用服务器的自有日志系统,还必须采取额外的措施来确保 Perf4j 的正常工作。

对代码段计时

Perf4j 中 org.perf4j.StopWatch 是整个 API 中的基础工具。这是一个封装良好的计时器。可以把

StopWatch 嵌入到代码中任何地方。这种方式往往使得复杂的方法得到分解,从而有利于精确定位问题的根源。以下通过清单 1 和清单 2

来介绍其具体用法。

清单 1.StopWacth 基本用法

public static void basicStopWatch() throws

InterruptedException{ // 创建 StopWacth 时开始计时,之后也可以用 stopWatch.start()

重新设定计时开始时间点 StopWatch stopWatch = new StopWatch("TransactionA"); //

执行需要计时的代码 Thread.sleep(2 * 1000L); String result = stopWatch.stop();

System.out.print(result); }

清单 1 中最后输出的结果示例:start[1340442785756] time[1995]

tag[TransactionA]。在构造函数中设定 tag[TransactionA]

用来区分不同的业务逻辑,可以把它看成是性能分析中的事务(Transaction)。

如果需要将多段代码分开统计,可采用 LoggingStopWatch 类的 lap() 方法定义多个事务。

清单 2.LoggingStopWatch 用法

public static void loggingStopWacth()

throws InterruptedException{ LoggingStopWatch stopWatch = new

LoggingStopWatch(); // 设定阈值,小于此阈值的结果将不会被记录下来

stopWatch.setTimeThreshold(1*1000L); Thread.sleep(2 * 1000L); //

停止当前计时,开始新的起始时间点 stopWatch.lap("TransactionB"); Thread.sleep(500L);

stopWatch.stop("TransactionC"); }

清单 2 中使用了 LoggingStopWatch 类,其 stop() 方法只是将执行时间数据通过

System.err.println() 输出。若与 Log4j 框架集成,则需要使用 LoggingStopWatch 的子类

Log4JStopWatch, 目前 Perf4j 还支持 Apache Commons

Logging、java.util.logginLogback,对应使用 CommonsLogStopWatch、

JavaLogStopWatch、Slf4JStopWatch。

如何修改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-Xss16m

b.打开Tomcat根目录下的bin文件夹,编辑catalina.bat,将其中的%CATALINA_OPTS%(共有四处)替换为:-Xmx128m-Xms64m-Xmn32m-Xss16m

二、查看配置JVM内存信息

Runtime.getRuntime().maxMemory();//最大可用内存,对应-Xmx

Runtime.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内存分配。

perfjava的简单介绍

运行java程序,启动JvisualVM提示"无法检测到本地java应用程序"的解决方案

在启动java程序的时候添加一个参数即可:

1 -XX:+PerfBypassFileSystemCheck

我的世界java指令大全

以下是Minecraft通用指令:

clear:清除玩家的物品

clone:复制或移动某区域内的方块

deop:撤销玩家的管理员身份

difficulty:调整游戏难度

effect:给予实体状态效果

enchant:对实体手持物品进行附魔

execute:在改变执行者、执行位置和角度,添加限制条件,并储存其输出值的情况下执行另一条命令

experience/xp:更改玩家的经验和等级

fill:在指定区域填充指定方块

function:执行函数

gamemode:修改游戏模式

gamerule:查看和修改游戏规则

give:给予玩家指定物品

help/?:列出可用指令、查看特定指令用法

kick:将玩家踢出服务器

kill:移除或杀死实体

list:列出在服务器中的玩家

locate:定位特定结构

me:以“* 执行者名称+动作”的格式发送一条旁白信息

op:给予玩家管理员身份

particle:显示粒子

playsound:播放音效

reload:重新加载数据包

say:通过聊天框向玩家发送消息

schedule:在经过指定的时间后执行函数

scoreboard:管理和查看记分板的目标、玩家和队伍

setblock:放置指定方块

setworldspawn:设置世界出生点

spawnpoint:设置特定玩家的重生点

spreadplayers:散步玩家

stopsound:停止音效

summon:生成实体

tag:管理实体的记分板标签

tell/msg/w:通过聊天框向玩家发送私聊信息

tellraw:向玩家发送JSON文本消息

time:设置时间

title:设置和显示标题

teleport/tp:传送实体

weather:设置天气

whitelist:管理服务器中的白名单

以下是java版特有指令:

advancement:使特定玩家达成进度

attribute:管理实体属性

ban:将玩家列入黑名单

ban-ip:将一个ip地址列入黑名单

banlist:显示黑名单

bossbar:管理boss栏

data:查看或修改方块或实体的nbt数据

datapack:管理数据包

debug:开始或结束调试会话

defaultgamemode:设置默认游戏模式

forceload:强制加载区块

item:修改方块或实体物品栏内的物品

jfr:使用Java FlightRecorder分析数据和某些自定义事件

locatebiome:定位生物群系

loot:将指定的战利品放入物品栏或世界

pardon:将玩家移出黑名单

pardon-ip:将一个ip地址移出黑名单

perf:记录并保存性能分析数据

placefeature[新增:JE 1.18.2]:放置一个地物,目前不可用

publish:向局域网开放单人游戏世界

recipe:给予或剥夺玩家配方

save-all:将服务器保存至硬盘

save-off:禁用服务器的自动保存

save-on:启用服务器的自动保存

seed:输出世界种子

setidletimeout:设置踢出空闲不动玩家的时间

spectate:使处于旁观者模式的玩家进入另一个实体的视角

stop:停止服务端

team:管理队伍

teammsg:给使用命令的实体所在的队伍全体成员发送消息

trigger:修改一个准则为“触发器”的记分板目标

worldborder:控制世界边界

perfjava的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于、perfjava的信息别忘了在本站进行查找喔。

The End

发布于:2022-11-22,除非注明,否则均为首码项目网原创文章,转载请注明出处。