導航:首頁 > 程序命令 > 線上問題排查java命令

線上問題排查java命令

發布時間:2022-07-01 21:21:07

java線上出了問題怎麼排查

環境變數意思領命行輸入命令環境變數指定所目錄搜索並調用相應命令
現 內部或外部命令運行程序"等字沒加進路徑C:\Program Files\Java\jdk1.6.0_1\bin;自看看目錄肯定沒javac程序
解決辦:找javac所路徑添加進path

⑵ CMD中javac和java命令的問題

  1. 「類名.java」這是一個固定的語法規則,就像「1+1=2」是類似的道理。「包名.類名.java」之所以會出錯是因為沒有這樣的語法規則,就像「你在大街上隨便碰見個人就讓他還你錢 你說人家會幹嘛」另外你既然提到了src目錄,說明你在用java編程工具寫代碼了,就可以不用cmd這種原始工具編譯代碼了。cmd命令只適合簡單簡短的代碼,是初學者用來熟悉基礎代碼的。

  2. java命令和javac命令,java命令是運行命令,javac是編譯命令。拿煮飯舉例子:一個java程序,javac命令是負責淘米煮飯的而java命令是負責吃飯的。當你執行java命令的時候,說明煮飯淘米已經完成。如果這兩個順序顛倒了飯都沒煮你吃什麼,不報錯才怪。「包名。類名.java」這種語法也是錯的

  3. 如果還是不明白可以留下qq遠程加好友指導你,這種問題最好是能看到源代碼,比較好解決,就單單一個圖不能直接判斷只能知道大概可能是哪些原因或者問題。不能有正對性的解決問題

⑶ 如何排查Java內存泄露

⑷ java內存溢出的問題如何排查

java程序大家都知道,內存溢出是經常見的錯誤,下面從基本的開始分析!
內存溢出是由於沒被引用的對象(垃圾)過多造成JVM沒有及時回收,造成的內存溢出。如果出現這種現象可行代碼排查:
一)是否App中的類中和引用變數過多使用了Static修飾 如public staitc Student s;在類中的屬性中使用 static修飾的最好只用基本類型或字元串。如public static int i = 0; //public static String str;
二)是否App中使用了大量的遞歸或無限遞歸(遞歸中用到了大量的建新的對象)
三)是否App中使用了大量循環或死循環(循環中用到了大量的新建的對象)
四)檢查App中是否使用了向資料庫查詢所有記錄的方法。即一次性全部查詢的方法,如果數據量超過10萬多條了,就可能會造成內存溢出。所以在查詢時應採用「分頁查詢」。
五)檢查是否有數組,List,Map中存放的是對象的引用而不是對象,因為這些引用會讓對應的對象不能被釋放。會大量存儲在內存中。
六)檢查是否使用了「非字面量字元串進行+」的操作。因為String類的內容是不可變的,每次運行"+"就會產生新的對象,如果過多會造成新String對象過多,從而導致JVM沒有及時回收而出現內存溢出。
如String s1 = "My name";
String s2 = "is";
String s3 = "xuwei";
String str = s1 + s2 + s3 +.........;這是會容易造成內存溢出的
但是String str = "My name" + " is " + " xuwei" + " nice " + " to " + " meet you"; //但是這種就不會造成內存溢出。因為這是」字面量字元串「,在運行"+"時就會在編譯期間運行好。不會按照JVM來執行的。
在使用String,StringBuffer,StringBuilder時,如果是字面量字元串進行"+"時,應選用String性能更好;如果是String類進行"+"時,在不考慮線程安全時,應選用StringBuilder性能更好。
知道原因了,解決起來就非常簡單了。

⑸ 怎樣使用jstack診斷Java應用程序故障

如果單靠通過查看代碼是很難去發現這個問題,在這一次故障排查中,我也學到了怎樣更好的使用jvm監控工具來進行診斷,主要用到了jstack和jmap命令,jmap上次已經講過就不再講了,下面就一個例子來講怎麼使用jstack來對的Java程序進行診斷。
首先讓我們來了解一下jstack這個命令的作用,jstack 是一個可以返回在應用程序上運行的各種各樣線程的一個完整轉儲的實用程序,您可以使用它查明問題。jstack [-l] <pid>,jpid可以通過使用jps命令來查看當前Java程序的jpid值,-l是可選參數,它可以顯示線程阻塞/死鎖情況。

/**
* 死鎖例子
* @author crane.ding
* @since 2011-3-20
*/
public class DeadLock {

public static void main(String[] args) {
final Object obj_1 = new Object(), obj_2 = new Object();

Thread t1 = new Thread("t1"){
@Override
public void run() {
synchronized (obj_1) {
try {
Thread.sleep(3000);
} catch (InterruptedException e) {}

synchronized (obj_2) {
System.out.println("thread t1 done.");
}
}
}
};

Thread t2 = new Thread("t2"){
@Override
public void run() {
synchronized (obj_2) {
try {
Thread.sleep(3000);
} catch (InterruptedException e) {}

synchronized (obj_1) {
System.out.println("thread t2 done.");
}
}
}
};

t1.start();
t2.start();
}

}

以上DeadLock類是一個死鎖的例子,假使在我們不知情的情況下,運行DeadLock後,發現等了N久都沒有在屏幕列印線程完成信息。這個時候我們就可以使用jps查看該程序的jpid值和使用jstack來生產堆棧結果問題。
$ java -cp deadlock.jar DeadLock &
$

$ jps
3076 Jps
448 DeadLock
$ jstack -l 448 > deadlock.jstack

結果文件deadlock.jstack內容如下:
2011-03-20 23:05:20
Full thread mp Java HotSpot(TM) Client VM (19.1-b02 mixed mode, sharing):

"DestroyJavaVM" prio=6 tid=0x00316800 nid=0x9fc waiting on condition [0x00000000]
java.lang.Thread.State: RUNNABLE

Locked ownable synchronizers:
- None

"t2" prio=6 tid=0x02bcf000 nid=0xc70 waiting for monitor entry [0x02f6f000]
java.lang.Thread.State: BLOCKED (on object monitor)
at com.demo.DeadLock$2.run(DeadLock.java:40)
- waiting to lock <0x22a297a8> (a java.lang.Object)
- locked <0x22a297b0> (a java.lang.Object)

Locked ownable synchronizers:
- None

"t1" prio=6 tid=0x02bce400 nid=0xba0 waiting for monitor entry [0x02f1f000]
java.lang.Thread.State: BLOCKED (on object monitor)
at com.demo.DeadLock$1.run(DeadLock.java:25)
- waiting to lock <0x22a297b0> (a java.lang.Object)
- locked <0x22a297a8> (a java.lang.Object)

Locked ownable synchronizers:
- None

"Low Memory Detector" daemon prio=6 tid=0x02bb9400 nid=0xa6c runnable [0x00000000]
java.lang.Thread.State: RUNNABLE

Locked ownable synchronizers:
- None

"CompilerThread0" daemon prio=10 tid=0x02bb2800 nid=0xcb8 waiting on condition [0x00000000]
java.lang.Thread.State: RUNNABLE

Locked ownable synchronizers:
- None

"Attach Listener" daemon prio=10 tid=0x02bb1000 nid=0x7f4 waiting on condition [0x00000000]
java.lang.Thread.State: RUNNABLE

Locked ownable synchronizers:
- None

"Signal Dispatcher" daemon prio=10 tid=0x02bd2800 nid=0xd80 runnable [0x00000000]
java.lang.Thread.State: RUNNABLE

Locked ownable synchronizers:
- None

"Finalizer" daemon prio=8 tid=0x02bab000 nid=0xe1c in Object.wait() [0x02d3f000]
java.lang.Thread.State: WAITING (on object monitor)
at java.lang.Object.wait(Native Method)
- waiting on <0x229e1148> (a java.lang.ref.ReferenceQueue$Lock)
at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:118)
- locked <0x229e1148> (a java.lang.ref.ReferenceQueue$Lock)
at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:134)
at java.lang.ref.Finalizer$FinalizerThread.run(Finalizer.java:159)

Locked ownable synchronizers:
- None

"Reference Handler" daemon prio=10 tid=0x02ba6800 nid=0xbe0 in Object.wait() [0x02cef000]
java.lang.Thread.State: WAITING (on object monitor)
at java.lang.Object.wait(Native Method)
- waiting on <0x229e1048> (a java.lang.ref.Reference$Lock)
at java.lang.Object.wait(Object.java:485)
at java.lang.ref.Reference$ReferenceHandler.run(Reference.java:116)
- locked <0x229e1048> (a java.lang.ref.Reference$Lock)

Locked ownable synchronizers:
- None

"VM Thread" prio=10 tid=0x02b6a400 nid=0x568 runnable

"VM Periodic Task Thread" prio=10 tid=0x02bc8400 nid=0x75c waiting on condition

JNI global references: 878

Found one Java-level deadlock:
=============================
"t2":
waiting to lock monitor 0x02baaeec (object 0x22a297a8, a java.lang.Object),
which is held by "t1"
"t1":
waiting to lock monitor 0x02baa2bc (object 0x22a297b0, a java.lang.Object),
which is held by "t2"

Java stack information for the threads listed above:
===================================================
"t2":
at com.demo.DeadLock$2.run(DeadLock.java:40)
- waiting to lock <0x22a297a8> (a java.lang.Object)
- locked <0x22a297b0> (a java.lang.Object)
"t1":
at com.demo.DeadLock$1.run(DeadLock.java:25)
- waiting to lock <0x22a297b0> (a java.lang.Object)
- locked <0x22a297a8> (a java.lang.Object)

Found 1 deadlock.

從這個結果文件我們一看到發現了一個死鎖,具體是線程t2在等待線程t1,而線程t1在等待線程t2造成的,同時也記錄了線程的堆棧和代碼行數,通過這個堆棧和行數我們就可以去檢查對應的代碼塊,從而發現問題和解決問題。

⑹ Java 命令提示符問題

首先在命令提示符中輸入javac回車,看一下有沒有一些提示,接著在命令提示符中輸入Java回車,再看一下有沒有提示。如果上面都沒問題的話,就試一下這個

⑺ JAVA高手請進,關於命令「JAVA」編譯器錯誤的問題

1、java.lang.ClassNotFoundException---這是關鍵,找不到類文件異常;
2、首先你要明白誰負責解釋.class文件?是jre的bin 和lib,你看你的path路徑和classpath路徑,是不是少了jre的這兩個文件;
3、寫成這樣的配置:
PATH=%JAVA_HOME%\bin; D:\Program Files\Java\jre6 \bin;
CLASSPATH=.;%JAVA_HOME%\lib;%JAVA_HOME%\lib\tools.jar;
4、jdk下面也有一個jre目錄,這個基本是負責解釋jdk的工具的,因為jdk大多數的工具也是java開發的,還有安裝時最好把jdk和jre放在同一個目錄下,好的習慣。

⑻ JDK執行JAVA命令時的遇到的問題

你需要確定以下幾個事情:
第一、系統變數是否設置正確。如果之前你能編譯成功,而又沒有做任何修改的話,那這一關你過了。

第二、確定文件的路徑有沒有錯誤。
第三、大小寫有沒有錯誤。
第四、注意特殊符號。

⑼ 在CMD下用java命令出現「找不到或無法載入主類」問題

有兩種辦法:

(1)把java類上的package去掉,直接運行命令java hello

//packagecom.tt.demo;//去掉

publicclasshello{
publicstaticvoidmain(String[]args){
System.out.println("HelloWorld!");
}
}

(2)如果保留帶有package的原代碼不改,則在java目錄下運行java命令。如

hello.java在我本地硬碟上目錄:E:myemo(項目名)srcmainjavacom tdemo 下

javac目錄運行成功後,切換到目錄E:myemo(項目名)srcmainjava下,運行命令:

java com.tt.demo.hello

packagecom.tt.demo;

publicclasshello{
publicstaticvoidmain(String[]args){
System.out.println("HelloWorld!");
}
}


參考:java命令:java命令錯誤: 找不到或無法載入主類

⑽ java項目上線前程序沒問題,上線後出bug,怎麼排查錯誤

看tomcat下的日誌 會拋出異常

閱讀全文

與線上問題排查java命令相關的資料

熱點內容
加密市場監管信息匯總 瀏覽:677
程序的加密文件是哪個 瀏覽:400
app首屏圖一張圖怎麼做 瀏覽:499
如何重啟資料庫伺服器 瀏覽:660
聯通程序員發展怎麼樣 瀏覽:709
山東省聯想伺服器供貨商雲空間 瀏覽:147
鴻天神尊小說哪個app可以看 瀏覽:396
做程序員的沒朋友嗎 瀏覽:360
阿里雲伺服器傳奇微端 瀏覽:924
phplinux時間 瀏覽:452
雲伺服器20性能 瀏覽:986
android強制系統橫屏 瀏覽:283
怎麼提前看未播出的電視劇app 瀏覽:666
cad轉pdf圖層 瀏覽:602
程序員接私活初級 瀏覽:436
全無油潤滑壓縮機 瀏覽:188
代碼加密常用方法 瀏覽:956
安卓手機如何解除已禁用 瀏覽:398
演算法的隨機性 瀏覽:489
高中解壓體育游戲 瀏覽:535