相关疑难解决方法(0)

我可以向Windows上的应用程序发送ctrl-C(SIGINT)吗?

我已经(过去)编写跨平台(Windows/Unix的),其命令行启动时,处理用户输入的应用Ctrl- C以同样的方式组合(即彻底结束应用程序).

在Windows上是否可以从另一个(不相关的)进程发送Ctrl- C/ SIGINT /等效进程来请求它干净地终止(给它一个整理资源的机会等)?

windows signals sigint

83
推荐指数
8
解决办法
9万
查看次数

JVisualVM和Java Mission Control有什么区别?

除了Java任务控制中更"先进"的GUI之外,它们有何不同?

乍一看,它们似乎提供了非常相似的功能(解释JMX数据和内存/ CPU分析).

但是,由于它们都随JDK一起提供(我使用的是JDK 1.7.0_51 SE),我假设存在显着差异,否则它们将合并为一个解决方案.特别是因为这会显着增加JDK的大小.

Java Mission Control最终是否会在未来取代JVisualVM?

java visualvm jvm-hotspot jvisualvm java-mission-control

50
推荐指数
2
解决办法
1万
查看次数

无法使用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
查看次数

制作java应用程序的"内存转储"?

我有Java应用程序,不幸的是,它在一段时间后开始消耗相当大的内存.更复杂的是,它不仅是Java应用程序,也是JavaFX 2应用程序.

我怀疑有一些内存泄漏,甚至可能在底层的JavaFX调用和本机库中.

理想的解决方案是在某个时刻获取所有java对象的转储(使用它们的内存),然后分析该转储.有没有办法实现这个目标?

java memory javafx-2

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

使用jmap命令的Java堆转储错误:过早的EOF

我在执行下面的命令时遇到了以下异常

jmap -dump:format=b,file=heap_dump.bin <process_id>
Run Code Online (Sandbox Code Playgroud)

输出:

Dumping heap to <file_name>
Exception in thread "main" java.io.IOException: Premature EOF
            at sun.tools.attach.HotSpotVirtualMachine.readInt(HotSpotVirtualMachine.java:248)
            at sun.tools.attach.LinuxVirtualMachine.execute(LinuxVirtualMachine.java:199)
            at sun.tools.attach.HotSpotVirtualMachine.executeCommand(HotSpotVirtualMachine.java:217)
            at sun.tools.attach.HotSpotVirtualMachine.dumpHeap(HotSpotVirtualMachine.java:180)
            at sun.tools.jmap.JMap.dump(JMap.java:242)
            at sun.tools.jmap.JMap.main(JMap.java:140)
Run Code Online (Sandbox Code Playgroud)

JDK版本:1.7.0_45

VM_OPT:

-Xms2g -Xmx4g  -XX:+UseG1GC -XX:MaxGCPauseMillis=1500 
-XX:G1HeapRegionSize=2 -XX:+PrintFlagsFinal -XX:ParallelGCThreads=4 -XX:ConcGCThreads=2 
Run Code Online (Sandbox Code Playgroud)

硬件:RHEL 5.x,4核CPU Linux机器6 GB RAM

根据oracle bug报告数据库(http://bugs.java.com/bugdatabase/view_bug.do?bug_id=6882554),这个问题已经修复,但我仍然得到jdk 1.7版本,内置编号为:45

除了升级到Jdk 1.8之外,您能否提出任何解决方案,由于其他依赖性,这在我的情况下是不可能的?

编辑:

我已尝试使用以下命令,此命令也不起作用(生成部分转储文件)并显示相同的早期EOF.

jmap -J-d64 -dump:format=b,file=<filename> <pid>
Run Code Online (Sandbox Code Playgroud)

我已经与启动该过程的用户触发了该命令.该用户具有该目录的写权限.该文件已生成但尚未完成.

2 GB堆写入了9 MB文件,该文件无法用于分析.

java heap-memory eof heap-dump

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

如何收集任何java进程的堆转储

我是Heaps的新手,任何人都可以建议我如何对任何java进程(如Jmeter)进行堆转储.我读到了关于jmap命令,但我没有得到执行/编写它的地方和方式(在eclipse或cmd中).这可能是一个非常基本的问题,但仍然需要建议.我可以从任何地方下载jmap.exe和jhat.exe吗?谢谢

java thread-dump heap-dump

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

为什么 jmap 和 jcmd 生成的堆转储大小存在差异?

我正在尝试使用以下 2 个命令进行堆转储

  1. jcmd $pid GC.heap_dump /tmp/filename.dump
  2. jmap -dump:format=b,file=/tmp/filename.dump $pid

jcmd 产生 ~300M 的文件大小,jmap 产生 ~1.4G 的文件大小。为什么这些是不同的大小,我们在 jmap 中有任何其他信息吗?我在 jcmd 中遗漏了一些参数吗?

JDK 是 1.8.0_162

Xms 和 Xmx 是 4G

java jmap heap-dump java-8 jcmd

8
推荐指数
1
解决办法
2738
查看次数

Wildfly 8.2.1上部署的Java 8应用程序的元空间内存流量问题

问题说明

我注意到我们在Wildfly 8.2.1上的每个Java8应用程序的部署使用了大约30-40 MB的Metaspace内存池.这很好,但事实是,一旦我重新部署相同的应用程序,Metaspace内存使用量将增加相同的30-40 MB,而旧的已分配的内存不会被释放.

我甚至都没有注意到它,但问题是我们有大约20个应用程序,并且我不时需要同时重新部署其中的10个应用程序.这反过来会导致一幅可怕的画面.

在此输入图像描述 基本上显示的是~10个应用程序的2次重新部署.

我不确定为什么GC无法释放分配给旧类的内存.这个服务器总共有16GB的物理内存,所以我可以重新部署所有应用程序,最多20-40次就是这样.应用服务器将达到限制并将停止响应任何命令.

所以,如果有人能帮我理解实际问题,我将非常感激:

  1. 这是Java8问题吗?(jdk 1.8.0_40-b26)
  2. 它是Wildfly 8.2.1的问题吗?
  3. 或者答案尽可能简单,原因是我的代码库?如果是这样,那么请你指导我可能是什么原因?

有关我的代码库的更多细节

1)与Wildfly一起使用2个独立的HornetQ服务器,每个应用程序使用~5个通道,每个通道至少有5个并发消费者.这反过来导致每个应用程序至少25个线程,总共至少25*20 = 500个线程.

2)对于所有低级JMS操作,我使用Spring JMS.

java memory-leaks jms wildfly metaspace

7
推荐指数
1
解决办法
5552
查看次数

如何微调 JVM 配置以减少最大线程堆栈大小?

我想更改 Spring-Boot Web 应用程序的 Java 中的默认线程堆栈大小。我怎样才能改变这个?或者我需要使用哪个参数来更改该值?

另外,第二个问题是,我可以在运行时以编程方式更改它吗?

java performance jvm jvm-arguments spring-boot

5
推荐指数
1
解决办法
2154
查看次数

解决java/Scala play框架应用程序中的性能问题

我们在生产[Java/Scala]中部署了应用程序.当CPU使用率或内存使用量激增时,我们会设置警报.

偶尔我们会看到CPU或内存使用量出现大幅增长.有时,正在运行的应用程序停止响应请求.

我经常在崩溃之前看到最后几次API命中的日志,这样我最近发现其中一个API正在下载大量数据并且内存耗尽.

当产品出现问题时,我是否可以获得解决一般问题[捕获统计数据的命令/工具]的提示?

java performance scala

2
推荐指数
1
解决办法
332
查看次数