導航:首頁 > 編程語言 > java進程號

java進程號

發布時間:2023-04-07 04:45:57

java如何獲得系統環境變數和當前程序運行的進程號

import java.util.*;
import java.io.*;

class SysProb
{
//返回納局當前系統變數的函數,結果放在一個Properties里邊,這里只針對win2k以上的,其它系統可以自己改進
public Properties getEnv() throws Exception
{
Properties prop=new Properties();
String OS = System.getProperty("os.name").toLowerCase();
Process p=null;
if(OS.indexOf("windows")>-1)
{
p=Runtime.getRuntime().exec("cmd /c set"); //其它的操作系統可以自行處理, 我這里是win2k
}
BufferedReader br=new BufferedReader(new InputStreamReader(p.getInputStream()));
String line;
while((line=br.readLine())!=null)
{
int i=line.indexOf("=");
if(i>-1)
{
String key=line.substring(0,i);
String value=line.substring(i+1);
prop.setProperty(key,value);
}
}
return prop;
}

//具體用法
public static void main(String[] args)
{
try
{
SysProb sp=new SysProb();
Properties p=sp.getEnv();
System.out.println(p.getProperty("Path")); //注意大小寫,如果寫成path就不對了
}
catch(Exception e)
{
System.out.println(e);
}

}
}

其他類型:

%COMPUTERNAME% 返回計腔茄桐算機的名稱。
%COMSPEC% 返回命令行解釋器可執行伍坦程序的准確路徑。 %WINDIR% 返回操作系統目錄的位置。
%OS% 返回操作系統的名稱。Windows 2000 將操作系統顯示為 Windows_NT。 %PATH% 指定可執行文件的搜索路徑。
%USERDOMAIN% 返回包含用戶帳戶的域的名稱。 %USERNAME% 返回當前登錄的用戶的名稱。

⑵ java獲取進程名稱

代碼:
package com.test;
import java.lang.management.ManagementFactory;
import java.lang.management.RuntimeMXBean;
public class Target {

public static void main(String[] args) throws InterruptedException { System.out.println(getProcessID());
while(true) {
Thread.sleep(10000);
}

}
public static final int getProcessID() {

RuntimeMXBean runtimeMXBean = ManagementFactory.getRuntimeMXBean();
System.out.println(runtimeMXBean.getName());
return Integer.valueOf(runtimeMXBean.getName().split("@")[0]) .intValue();

}
}
運行結果:2896@PC-20150603VRPL2896
當前進程ID為2896。
ManagementFactory是一個在運行時管理和監控Java VM的工廠類,它能提供很多管理VM的靜態介面,比如RuntimeMXBean;
RuntimeMXBean是Java虛擬機的運行時管理介面.

⑶ 為什麼進程顯示安裝向導用java獲取的進程名稱

Java 獲取進程名稱的方法是通過讀取操作系統中正在運行的進程列表,獲取每個進程的名稱和其他詳細信息。在操作系統中,一個進程可以包含多個線程,因此獲取進程名稱是獲亂棗取進程名字所表示的主線程的名稱。

對於顯示安裝向導使用Java獲取的進程名稱不正確的問題,可能有以下幾種原因:

1. 進程沒有按預期名稱顯示:如果安裝向導沒有按照操作系統要求的格式命名,那麼Java可能無法正確地識別該進程,並且可能會顯示錯誤的進程名稱。

2. 操作系統許可權不足:如果Java程序沒有足夠的許可權來訪問正在運行的進程列表,那麼它可能無法正確地閱讀該信息並顯示錯誤的進程名稱。

3. 進程正在被佔用或關閉:如果安裝向導正在被佔用或已經關閉,Java可能無法正確地讀取正在運行的進程列表,並且可能會顯示錯誤的進程名稱嘩肆拆。

為了解決這個問題,可以嘗試以下方法:

1. 確保進程名稱按照操作系統要求的格式命名。

2. 給Java程序賦予足夠的許可權,以便能夠讀取正在運行的進程列表。

3. 在嘗試讀取進程列表之前,確保正在運行的進程沒有被佔用或已經關閉。雹鬧

⑷ jstack 分析出線程id 如何找到進程嗎

jstack 分析出線程id 如何找到進程
jstack用於列印出給定的java進程ID或core file或遠程調試服務的Java堆棧信息。
如果是在64位機器上,需要指定選項"-J-d64",Windows的jstack使用方式只支持以下的這種方式:jstack [-l] pid
如果java程序崩潰生成core文件,jstack工具可以用來獲得core文件的java stack和native stack的信息,從而可以輕松地知道java程序是如何崩潰和在程序何處發生問題。
另外,jstack工具還可以附屬到正在運行的java程序中,看到當時運行的java程序的java stack和native stack的信息, 如果現在運行的java程序呈現hung的狀態,jstack是非常有用的。
需要注意的問題:
l 不同的 JAVA虛機的線程 DUMP的創建方法和文件格式是不一樣的,不同的 JVM版本, mp信息也有差別。
l 在實際運行中,往往一次 mp的信息,還不足以確認問題。建議產生三次 mp信息,如果每次 mp都指向同一個問題,我們才確定問題的典型性。
2、命令格式
$jstack [ option ] pid
$jstack [ option ] executable core
$jstack [ option ] [server-id@]remote-hostname-or-IP
參數說明:
pid: java應用程序的進程號,一般可以通過jps來獲得;
executable:產生core mp的java可執行程序;
core:列印出的core文件;
remote-hostname-or-ip:遠程debug伺服器的名稱或IP;
server-id: 唯一id,假如一台主機上多個遠程debug服務;

示例:
$jstack –l 23561

線程分析:
一般情況下,通過jstack輸出的線程信息主要包括:jvm自身線程、用戶線程等。其中jvm線程會在jvm啟動時就會存在。對於用戶線程則是在用戶訪問時才會生成。

⑸ wasmaxperm怎麼查

高級 Java 必須掌握:JVM 分析工具和查看命令,超詳細

薄荷味的團子

2019-6-12 10:56

jinfo

可以輸出並修改運行時的Java 進程的opts。

jps

與unix上的ps類似,用來顯示本地的java進程,可以查看本地運行著幾個java程序,並顯示他們的進程號。

jstat

一個極強的監視VM內存工具。可以用來監視VM內存內的各種堆和非堆的大小及其內存使用量。

jmap

列印出某個java進程(使用pid)內存內的所有'對象'的情況(如:產生那些對象,及其數量)。

jconsole

一個java GUI監視工具,可以以圖表化的形式顯示各種數據。並可通過遠程連接監視遠程的伺服器VM。

詳細:在使用這些工具前,先用JPS命令獲取當前的每個jvm進程號,然後選擇要查看的JVM。

jstat工具喊則特別強大,有眾多的可選項,詳細查看堆內各個部分的使用量,以及載入類的數量。使用時,需加上查看進程的進程id,和所選參數。

以下詳細介紹各個參數的意義。

jstat -class pid:顯示載入宏滲皮class的數量,及所佔空間等信息。

jstat -compiler pid:顯示VM實時編譯的數量等信息。

jstat -gc pid:可以顯示gc的信息,查看gc的次數,及時蔽差間。其中最後五項,分別是young gc的次數,young gc的時間,full gc的次數,full gc的時間,gc的總時間。

jstat -gccapacity:可以顯示,VM內存中三代(young,old,perm)對象的使用和佔用大小,如:PGCMN顯示的是最小perm的內存使用量,PGCMX顯示的是perm的內存最大使用量,PGC是當前新生成的perm內存佔用量,PC是但前perm內存佔用量。

其他的可以根據這個類推, OC是old內純的佔用量。

jstat -gcnew pid:new對象的信息。

jstat -gcnewcapacity pid:new對象的信息及其佔用量。

jstat -gcold pid:old對象的信息。

jstat -gcoldcapacity pid:old對象的信息及其佔用量。

jstat -gcpermcapacity pid: perm對象的信息及其佔用量。

jstat -util

⑹ java在windows下如何實現獲取進程ID

給你個例子,通過調用改高windows的命令得到當前系統內的進程列表,然後你根據需要自己過濾出想要的進程ID(字元串分析).

try {
Process p = Runtime.getRuntime().exec("cmd /c tasklist");
InputStream is = p.getInputStream();
BufferedInputStream bis = new BufferedInputStream(is);
byte[] buf = new byte[4096];
while(is.read(buf)>0){
//我在這里只是簡單輸出結果,你可以對結果進行你要的處理。
System.out.println(new String(buf));
}
bis.close();
is.close();
} catch (IOException e) {
e.printStackTrace();
} 答案補充 java是運行在其JVM中的,JVM是操作系統的一個進程,和操作系統中的其他進程是一樣的.
對於你的補充提祥念問,建議你使用java的jni來解決.java通過jni可以調用C來完核宴尺成一些底層的事情.

⑺ 如何查看Java進程並獲取進程ID

用top -u 命令查友蔽閉看進程以及PID。 命令如下: $ top -u PID — 進程idUSER — 進程所有並好者PR —好裂

⑻ docker容器內外cpu佔用不一致

Docker容襪坦器cpu佔用問題排查方案如下:
1、top命令查出Java進程ID;
2、查出java進程內告差桐哪個線程ID佔用cpu最高;
3、將線程ID轉換成16進制;慶陵
4、抓取對應線程堆棧信息;
5、查看線程異常的日誌信息:jstack進程號|grep16進制異常線程號-A90。

⑼ 如何查看java進程及服務

滑鼠放在電腦桌面底部右擊,選擇任務管理器,就能看到你想看的了

⑽ java 獲取指定的進程id

package test;

import java.io.BufferedReader;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.PrintWriter;

public class GetPid {

private static final String PNAME = "QQ";

public static void main(String[] args)
throws IOException {
System.out.println("包含關鍵字 "+PNAME+" 的進程有:");
System.out.println();
String path = System.getProperty("user.dir");
final File createFileName = new File(path + "\\mytempscript.vbe");
if(createFileName.exists()?createFileName.delete():createFileName.createNewFile()){}

final PrintWriter pw = new PrintWriter(new FileWriter(createFileName,
true), true);
pw.println("for each ps in getobject(\"winmgmts:\\\\.\\root\\cimv2:win32_process\").instances_");
pw.println("wscript.echo ps.handle&vbtab&ps.name");
pw.println("next");
pw.close();

final InputStream ii = Runtime.getRuntime().exec(
"cscript " + path + "\\mytempscript.vbe").getInputStream();

final InputStreamReader ir = new InputStreamReader(ii);

final BufferedReader br = new BufferedReader(ir);
String str = null;
String[] ss = null;
while ((str = br.readLine()) != null) {
if (str.indexOf(PNAME)>0&&str.endsWith(".exe")) {
ss = str.split("\\s");
for(int i=0;i<ss.length;i+=2){
System.out.println("****************************");
System.out.println("進程名:"+ss[i+1]+"\n進程ID:"+ss[i]);
}
}
}
System.out.println("****************************");
ir.close();
ii.close();
br.close();
}
}

運行結果如下

包含關鍵字 QQ 的進程有:

****************************
進程名:QQ.exe
進程ID:3956
****************************

閱讀全文

與java進程號相關的資料

熱點內容
linuxsftp連接 瀏覽:934
光伏日發電量演算法 瀏覽:125
小肚皮app怎麼才有vip 瀏覽:616
php全形轉換半形 瀏覽:927
java字元序列 瀏覽:539
杭州編譯分布式存儲區塊鏈 瀏覽:575
材料壓縮曲線 瀏覽:247
linux命令排序 瀏覽:151
手機熱點加密為啥連接不上電腦 瀏覽:979
編譯器合並計算 瀏覽:959
android音頻曲線 瀏覽:343
linuxftp自動登錄 瀏覽:802
運行編譯後網頁 瀏覽:70
閱讀app怎麼使用 瀏覽:319
centos防火牆命令 瀏覽:432
命令行變更 瀏覽:332
linux設備和驅動 瀏覽:207
加密貨幣騙局破案 瀏覽:345
cc特徵碼加密 瀏覽:775
清空dns緩存命令 瀏覽:295