java中用什么查看日志(java服务器某段时间cpu高怎么拿到日志)
很多朋友对于java中用什么查看日志和java服务器某段时间cpu高怎么拿到日志不太懂,今天就由小编来为大家分享,希望可以帮助到大家,下面一起来看看吧!
java gc的日志在哪里看
-verbose.gc开关可显示gc的操作内容。打开它,可以显示最忙和最空闲收集行为发生的时间、收集前后的内存大小、收集需要的时间等。打开- xx:+ printgcdetails开关,可以详细了解gc中的变化。打开-XX:+ PrintGCTimeStamps开关,可以了解这些垃圾收集发生的时间,自jvm启动以后以秒计量。最后,通过-xx:+ PrintHeapAtGC开关了解堆的更详细的信息。为了了解新域的情况,可以通过-XX:=PrintTenuringDistribution开关了解获得使用期的对象权。
怎么用java读取windows系统日志
您好,很高兴为您解答。
获取相关信息的简单的方法
importjava.io.*;
importcom.sun.management.OperatingSystemMXBean;
importsun.management.ManagementFactory;
publicclassTst{
publicstaticStringpt="D:\\abc.txt";
publicTst(){
}
publicstaticvoidmain(String[]args)throwsException{
//free和use和total均为KB
longfree=0;
longuse=0;
longtotal=0;
intkb=1024;
Runtimert=Runtime.getRuntime();
total=rt.totalMemory();
free=rt.freeMemory();
use=total-free;
System.out.println("系统内存已用的空间为:"+use/kb+"MB");
System.out.println("系统内存的空闲空间为:"+free/kb+"MB");
System.out.println("系统总内存空间为:"+total/kb+"MB");
OperatingSystemMXBeanosmxb=(OperatingSystemMXBean)
ManagementFactory.getOperatingSystemMXBean();
longphysicalFree=osmxb.getFreePhysicalMemorySize()/kb;
longphysicalTotal=osmxb.getTotalPhysicalMemorySize()/kb;
longphysicalUse=physicalTotal-physicalFree;
Stringos=System.getProperty("os.name");
System.out.println("操作系统的版本:"+os);
System.out.println("系统物理内存已用的空间为:"+physicalFree+"MB");
System.out.println("系统物理内存的空闲空间为:"+physicalUse+"MB");
System.out.println("总物理内存:"+physicalTotal+"MB");
//获得线程总数
ThreadGroupparentThread;
for(parentThread=Thread.currentThread().getThreadGroup();
parentThread
.getParent()!=null;parentThread=
parentThread.getParent())
;
inttotalThread=parentThread.activeCount();
System.out.println("获得线程总数:"+totalThread);
}
}
// 3.操作系统信息
//a)取到当前操作系统的名称:
publicStringgetPlatformName(){
Stringhostname="";
try
{
hostname=InetAddress.getLocalHost().getHostName();
}catch
(Exceptionexc){
Sigarsigar=newSigar();
try{
hostname=
sigar.getNetInfo().getHostName();
}catch(SigarExceptione)
{
hostname="localhost.unknown";
}finally
{
sigar.close();
}
}
returnhostname;
}
//b)取当前操作系统的信息
publicvoidtestGetOSInfo(){
OperatingSystemOS=
OperatingSystem.getInstance();
//操作系统内核类型如:
386、486、586等x86
System.out.println("OS.getArch()="+
OS.getArch());
System.out.println("OS.getCpuEndian()="
+OS.getCpuEndian());//
System.out.println("OS.getDataModel()="
+OS.getDataModel());//
//系统描述
System.out.println("OS.getDescription()
="+OS.getDescription());
System.out.println("OS.getMachine()="
+OS.getMachine());//
//操作系统类型
System.out.println("OS.getName()="+
OS.getName());
System.out.println("OS.getPatchLevel()="
+OS.getPatchLevel());//
//操作系统的卖主
System.out.println("OS.getVendor()
="+OS.getVendor());
//
卖主名称
System.out
.println("OS.getVendorCodeName()="
+OS.getVendorCodeName());
//
操作系统名称
System.out.println("OS.getVendorName()="
+OS.getVendorName());
//
操作系统卖主类型
System.out.println("OS.getVendorVersion()="
+OS.getVendorVersion());
//
操作系统的版本号
System.out.println("OS.getVersion()="
+OS.getVersion());
}
// 4.资源信息(主要是硬盘)
//
a)取硬盘已有的分区及其详细信息(通过sigar.getFileSystemList()来获得FileSystem列表对象,然后对其进行编历):
public
voidtestFileSystemInfo()throwsException{
Sigarsigar=new
Sigar();
FileSystemfslist[]=sigar.getFileSystemList();
//Stringdir
=System.getProperty("user.home");//当前用户文件夹路径
for(inti=0;i<
fslist.length;i++){
System.out.println("\n~~~~~~~~~~"+i
+"~~~~~~~~~~");
FileSystemfs=fslist[i];
//
分区的盘符名称
System.out.println("fs.getDevName()="
+fs.getDevName());
//分区的盘符名称
System.out.println("fs.getDirName()=
"+fs.getDirName());
System.out.println("fs.getFlags()="+
fs.getFlags());//
//文件系统类型,比如
FAT32、NTFS
System.out.println("fs.getSysTypeName()="
+fs.getSysTypeName());
//
文件系统类型名,比如本地硬盘、光驱、网络文件系统等
System.out.println("fs.getTypeName()="
+fs.getTypeName());
//文件系统类型
System.out.println("fs.getType()="
+fs.getType());
FileSystemUsageusage=null;
try{
usage=
sigar.getFileSystemUsage(fs.getDirName());
}catch(SigarExceptione)
{
if(fs.getType()==2)
throw
e;
continue;
}
switch(fs.getType()){
case0://
TYPE_UNKNOWN:未知
break;
case1://
TYPE_NONE
break;
case2://TYPE_LOCAL_DISK:本地硬盘
//
文件系统总大小
System.out.println("Total="+usage.getTotal()+
"KB");
//文件系统剩余大小
System.out.println("Free="+usage.getFree()
+"KB");
//文件系统可用大小
System.out.println("Avail="
+usage.getAvail()+"KB");
//文件系统已经使用量
System.out.println("Used
="+usage.getUsed()+"KB");
doubleusePercent=usage.getUsePercent()*
100D;
//文件系统资源的利用率
System.out.println("Usage="+usePercent
+"%");
break;
case3://TYPE_NETWORK:网络
break;
case
4://TYPE_RAM_DISK:闪存
break;
case5://TYPE_CDROM
:光驱
break;
case6://TYPE_SWAP
:页面交换
break;
}
System.out.println("DiskReads="
+usage.getDiskReads());
System.out.println("DiskWrites="
+usage.getDiskWrites());
}
return;
}
如若满意,请点击右侧【采纳答案】,如若还有问题,请点击【追问】
希望我的回答对您有所帮助,望采纳!
~ O(∩_∩)O~
java服务器某段时间cpu高怎么拿到日志
当Java服务器出现CPU高的情况,一般是因为当前执行的代码或者线程对CPU的消耗过高,导致服务器负载过大。为了查找原因并解决问题,需要拿到服务器的相关日志,可以采用以下几种方法:1.查看操作系统的系统日志,查找对应时间段的信息,如果系统日志中发现java进程异常的信息,可以确认具体是哪个线程或哪段代码引起了CPU过高的问题。2.可以使用Java自带的jstack工具分析dump出来的线程快照信息,查看程序运行时所有线程的堆栈信息,定位到执行过程中的具体方法、类等信息,从而确认代码出现的问题。3.使用工具进行分析,可以使用非常流行的各种分析工具,例如visualVm、JProfiler、JMC、jconsole等,其中visualVm和JProfiler比较常用,可以通过这些工具实时监控程序的运行状态,找到并解决问题。总之,当Java服务器CPU高的情况出现时,需要针对性地分析各种日志信息,找出程序运行时的问题点,并进行调整优化,才能使服务器的性能得到提升。
文章到此结束,如果本次分享的java中用什么查看日志和java服务器某段时间cpu高怎么拿到日志的问题解决了您的问题,那么我们由衷的感到高兴!