相关疑难解决方法(0)

Tomcat线程转储

有没有从Tomcat 采取线程转储.我想在特定时间监视Tomcat上正在运行的线程.

注意:我在Web逻辑上这样做,但我不知道如何在Tomcat上完成它.

java tomcat permgen thread-dump

20
推荐指数
3
解决办法
4万
查看次数

无法使用jhat,jps,jstack调试Java Windows服务

我经常在Linux和Mac上向开发人员展示jhat,jps和jstack工具集.但是,一位开发人员最近表示,如果相关的Java应用程序作为Windows服务运行,则这些在Windows中无法使用.

一个太阳提交的bug说的非常相似,但由于不活动而被关闭.

我已经为自己测试了这一点,但事实上它似乎是正确的,尽管我几乎无法相信.这是设置:

  1. 使用"登录为"=="本地系统"作为Windows服务运行的Tomcat或类似程序
  2. 具有Admin权限的用户登录到同一台Windows计算机.
  3. 管理员打开Windows任务管理器,可以看到java.exe正在运行
  4. 管理员打开控制台,键入"jps",获取不包含Tomcat的java服务进程的进程列表.
  5. 作为强力尝试,从Windows任务管理器获取tomcat的PID作为服务.输入jstack <pid>.得到回复:<pid>没有这样的过程

这在Windows XP,Windows 2003 Server和Windows 7下可重现.Java版本1.5和1.6产生相同的结果.

有没有办法从终端,即使以管理员身份登录,"sudo up"获取JPS和其他工具来查看java服务?

java windows windows-services

13
推荐指数
2
解决办法
9298
查看次数

com.sun.tools.attach.AttachNotSupportedException:无法打开套接字文件:目标进程未响应或未加载HotSpot VM

AttachNotSupportedException 在linux(ubuntu 64bit)上运行jmockit测试时得到的.Java版本是1.7.0_51.这个JDK来自Oracle.使用ant运行测试(可能不相关)

查看堆栈跟踪.

[junit] 
[junit] java.lang.RuntimeException: com.sun.tools.attach.AttachNotSupportedException: Unable to open socket file: target process not responding or HotSpot VM not loaded
[junit]     at mockit.internal.startup.JDK6AgentLoader.getVirtualMachineImplementationFromEmbeddedOnes(JDK6AgentLoader.java:89)
[junit]     at mockit.internal.startup.JDK6AgentLoader.loadAgent(JDK6AgentLoader.java:54)
[junit]     at mockit.internal.startup.AgentInitialization.initializeAccordingToJDKVersion(AgentInitialization.java:21)
[junit]     at mockit.internal.startup.Startup.initializeIfNeeded(Startup.java:136)
[junit]     at mockit.internal.startup.Startup.initializeIfPossible(Startup.java:169)
[junit]     at junit.framework.TestResult.<clinit>(TestResult.java:15)
[junit]     at org.apache.tools.ant.taskdefs.optional.junit.JUnitTestRunner.run(JUnitTestRunner.java:356)
[junit]     at org.apache.tools.ant.taskdefs.optional.junit.JUnitTestRunner.launch(JUnitTestRunner.java:1165)
[junit]     at org.apache.tools.ant.taskdefs.optional.junit.JUnitTestRunner.main(JUnitTestRunner.java:1016)
[junit] Caused by: com.sun.tools.attach.AttachNotSupportedException: Unable to open socket file: target process not responding or HotSpot VM not loaded
[junit]     at sun.tools.attach.LinuxVirtualMachine.<init>(LinuxVirtualMachine.java:106)
[junit]     at mockit.internal.startup.JDK6AgentLoader.getVirtualMachineImplementationFromEmbeddedOnes(JDK6AgentLoader.java:79)
[junit]     ... 8 more
[junit] Exception …
Run Code Online (Sandbox Code Playgroud)

linux jmockit java-7

11
推荐指数
3
解决办法
1万
查看次数

基于文本搜索的算法不按预期运行

更新

我已经使用SO用户建议的更新代码更新了问题,并将澄清之前存在的任何模糊文本.

更新#2

我只能访问相关应用程序生成的日志文件.因此,我被限制在日志文件的内容中工作,并且没有超出该范围的解决方案.我会稍微修改一下样本数据.我想指出以下关键变量.

Thread ID - 范围从0..19 - 线程被多次使用.因此ScriptExecThread(2)可以在日志中多次出现.

Script - 每个线程都将在特定文件上运行脚本.同样的脚本可能会在同一个线程上运行,但不会在同一个线程AND文件上运行.

File- 每个人都Thread IDScript一个File.如果Thread(10)在运行myscript.scriptmyfile.file,然后,准确的线不会被再次执行.使用上述示例的成功示例将是这样的.

- - - 开始 - - -

线程(10)在myfile.file上启动myscript.script

线程(10)在myfile.file上完成了myscript.script

- - - 结束 - - - -

使用上面示例的不成功示例将是:

- - - 开始 - - -

线程(10)在myfile.file上启动myscript.script

- - - 结束 - - -


在解决我的查询之前,我将简要介绍所使用的代码和所需的行为.


摘要

我正在解析大型日志文件(平均需要100k到600k行),并且我试图按特定顺序检索某些信息.我已经根据我的要求制定了布尔代数,它似乎在纸上起作用但在代码上却没有那么多(我肯定错过了一些显而易见的东西).我想提前告知代码没有任何形状或形式优化,现在我只想让它工作.

在此日志文件中,您可以看到某些线程在它们启动时挂起但从未完成.可能的线程ID范围的数量.这是一些伪代码:

    REGEX = "ScriptExecThread(\\([0-9]+\\)).*?(finished|starting)" //in java
    Set started, finished …
Run Code Online (Sandbox Code Playgroud)

java algorithm text

9
推荐指数
2
解决办法
360
查看次数