
正文
java故障代码报警 java报错信息
提示:扫一扫查出行【扫一扫了解最新限行尾号】
复制提示
怎样使用jstack诊断Java应用程序故障
如果单靠通过查看代码是很难去发现这个问题,在这一次故障排查中,我也学到java故障代码报警了怎样更好的使用jvm监控工具来进行诊断,主要用到java故障代码报警了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 dump 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造成的,同时也记录了线程的堆栈和代码行数,通过这个堆栈和行数我们就可以去检查对应的代码块,从而发现问题和解决问题。
相关问答
Q1: 安装java显示故障代码为1683什么意思?怎么解决?
JAVA自带了文件选择对话框。
用FileDialog。
FileDialog dialog = new FileDialog (shell, SWT.OPEN);
dialog.setText("File Folder Selection");
dialog.setFilterExtensions(new String[] {"*.xml","*.wsdl","*.asmx","*.*"});
String filePath = dialog.open();
if(dialog!=null){
text_file.setText(filePath);
}
Q2: 迅雷更新后不能使用,跳出错误提示error出来很多英文字JAVA的警告?
脚本错误”形成的原因是因为访问者所使用的浏览器不能完全支持页面里的脚本,而且出现频率并不低。遇到“脚本错误”时一般会弹出一个非常难看的脚本运行错误警告窗口,而事实上,脚本错误并不会影响网站浏览,因此这一警告可谓多此一举。要关闭警告则可以在浏览器的工具菜单选择Internet选项,然后单击高级属性页。进入到浏览标签,并选中“禁止脚本调试”复选框,以后java故障代码报警你就不会再收到这些警告java故障代码报警了
晕,我那样解决就ok了。那再给你多点参考吧!
IE中的脚本错误
某个网页可能会无法正常显示或工作,您可能会收到一条类似于以下之一的错误消息:
该网页上的问题可能使其无法正常显示或功能不正常。以后,双击显示在状态栏中的警告图标,就可以显示上述消息。
如果您单击“显示详细信息”,则会显示类似于下面的错误详细信息:
Line:4
Char:1
Error:Object doesn’t support this property or method.
Code:0
URL:
A Runtime Error has occured.
Do you wish to Debug?
Line:4
Error:Object doesn’t support this property or method.
下面的警告消息也可能出现在 Microsoft Internet Explorer“状态”栏中:
已完毕,但网页上有错误
出现此问题是因为该网页的 HTML 源代码不能使用客户端脚本(如 Microsoft JScript 或 Visual basic 脚本)正确工作。发生此问题可能是因为以下原因之一: 网页的 HTML 源代码中有问题。
您的计算机或网络上阻止了活动脚本、ActiveX 控件或 Java 小程序。Internet Explorer 或另外一种程序(如防病毒程序或防火墙)可以配置为阻止活动脚本、ActiveX 控件或 Java 小程序
防病毒软件配置为扫描您的“临时 Internet 文件”或“已下载的程序文件”文件夹。
您计算机上的脚本引擎损坏或过时。
您计算机上的 Internet 相关文件夹损坏。
您的视频卡驱动程序已损坏或者已过时。
您计算机上的 DirectX 组件损坏或过时。
注意:服务器端脚本 -- 如 Active Server pages (ASp) 中的 Visual basic 脚本 -- 运行在 Web 服务器上。因服务器端脚本故障而发生的脚本错误不在 Internet Explorer 中生成错误消息,但也可能会创建一个不能正确显示或工作的网页。本文中的故障排除信息适用于服务器端脚本错误。如果您怀疑服务器端脚本有问题,请与 Web 服务器的管理员联系。
解决方案
使用本文中的故障排除方法时要按它们出现的顺序进行。在您完成一个故障排除部分后,请进行测试以确定是否仍发生此脚本错误。如果问题已解决,则不必继续下一部分。如果问题未解决,则继续执行下一部分。
从另一个用户帐户、另一个浏览器和另一台计算机测试网页
如果问题只在您查看一个或两个网页时发生,则从另一个用户帐户、另一个浏览器或另一台计算机查看这些网页,以确定问题是否依然存在。如果脚本错误依然存在,则可能是网页的编写有问题。请与网站管理员或内容开发者联系,告诉他们网页存在的问题。如果从另一个用户帐户使用网页时脚本错误未发生,则问题可能是您的用户配置文件的文件或设置造成的。如果在从另一个浏览器或另一台计算机使用网页时脚本错误未发生,则继续进行故障排除操作。
确认活动脚本、ActiveX 和 Java 未被阻止
确认您计算机上的 Internet Explorer 或另外一种程序(如防病毒程序或防火墙)未配置为阻止活动脚本、ActiveX 控件或 Java 小程序。在 Internet Explorer 的“高”安全级别,活动脚本、ActiveX 控件和 Java 小程序被关闭。默认情况下,Internet Explorer 6 和某些 Internet Explorer 5.x 版本针对受限站点区域使用“高”安全级别。默认情况下,Microsoft Windows Server 2003 针对受限站点区域和 Internet 区域使用“高”安全级别。如要为当前网页重置 Internet Explorer 安全设置,请按照下列步骤操作:1. 启动 Internet Explorer。
2. 在“工具”菜单上,单击“Internet 选项”。
3. 在“Internet 选项”对话框中,单击“安全”。
4. 单击“默认级别”。
5. 单击“确定”。
请参见您使用的防病毒程序或防火墙的文档资料,以确定如何打开脚本、ActiveX 和 Java 小程序。
确认您的防病毒程序未设置为扫描“临时 Internet 文件”或“已下载的程序文件”文件夹
请参见您使用的防病毒程序的文档资料,以确定如何防止该程序扫描“临时 Internet 文件”或“已下载的程序文件”文件夹。
删除所有临时的 Internet 相关文件
从您的计算机中删除所有临时的 Internet 相关文件。为此,请按照下列步骤操作:1. 启动 Internet Explorer。
2. 在“工具”菜单上,单击“Internet 选项”。
3. 单击“常规”选项卡。
4. 在“Internet 临时文件”下,单击“设置”。
5. 单击“删除文件”。
6. 单击“确定”。
7. 单击“删除 Cookies”。
8. 单击“确定”。
9. 在“历史记录”下,单击“清除历史记录”,然后单击“是”。
10. 单击“确定”。
参考资料:
Q3: java代码:498什么故障
498是一个HTTP状态码java故障代码报警,表明客户端无法继续请求java故障代码报警,因为客户端已经禁止此请求。具体的原因可能有java故障代码报警:1.客户端访问的服务器资源不存在java故障代码报警;2.服务器拒绝客户端访问;3.客户端请求中有非法字符;4.客户端限制了访问权限;5.服务器上的程序出现了错误;6.服务器上的资源已经被禁止访问。
Q4: java项目在myeclipse中为什么会出现一个小的问号?代表什么意思??
没受CVS控制了,CVS不认识这些文件和目录,项目目录下是不是这些目录和文件就没提交到CVS呀。
你邮件team--与资源同步一下,然后再重新构建一下项目试试。
一、电脑常见问题
主板不启动,开机无显示,有显卡报警声。
故障原因:一般是显卡松动或显卡损坏。
处理办法:打开机箱,把显卡重新插好即可。要检查AGP插槽内是否有小异物,否则会使显卡不能插接到位;对于使用语音报警的主板,应仔细辨别语音提示的内容,再根据内容解决相应故障。
如果以上办法处理后还报警,就可能是显卡的芯片坏了,更换或修理显卡。如果开机后听到"嘀"的一声自检通过,显示器正常但就是没有图像,把该显卡插在其他主板上,使用正常,那就是显卡与主板不兼容,应该更换显卡。
关于java故障代码报警和java报错信息的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。






