相关疑难解决方法(0)

如何从Java打开Windows命名管道?

在我们的Linux系统中,我们使用命名管道进行进程间通信(生产者和消费者).

为了测试使用者(Java)代码,我想实现(在Java中)一个虚拟生成器,它写入连接到使用者的命名管道.

现在,测试也应该在Windows开发环境中运行.因此,我想知道如何在Java中从Windows创建命名管道.在Linux中,我可以使用mkfifo(使用称为Runtime.exec()),但我应该如何在Windows上执行此操作?

java windows named-pipes

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

Java GC日志中充满了奇怪的字符

我在使用GC日志的几台服务器上遇到问题.它充满了这个:

^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@
^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@
^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@
Run Code Online (Sandbox Code Playgroud)

注意到这发生在给JVM提供大量内存的服务器上:-Xms32G -Xmx48G.这可能是一个红鲱鱼,但想提到它.

由于这些是低延迟/高吞吐量的应用程序,分析日志至关重要.但相反,它充满了上面的那些字符.

我们使用的是Java 8:

java version "1.8.0_40"
Java(TM) SE Runtime Environment (build 1.8.0_40-b26)
Java HotSpot(TM) 64-Bit Server VM (build 25.40-b25, mixed mode)
Run Code Online (Sandbox Code Playgroud)

我们用它来创建日志:

-verbose:gc
-Xloggc:/path/to/gc.log
-XX:+PrintGCDetails
-XX:+PrintGCDateStamps
Run Code Online (Sandbox Code Playgroud)

以前有人见过这个问题吗?可能导致什么?

java logging garbage-collection jvm java-8

17
推荐指数
2
解决办法
1102
查看次数

使用logrotate的垃圾收集器日志(loggc)文件轮换无法正常工作

使用带有Linux logrotate命令的JVM垃圾收集日志选项时,我遇到了一个奇怪的问题.执行旋转时,它将NUL(^ @)值填充为作为JVM参数给出的文件的第一行.

假设这是java调用(Test.class位于/ home/test /):

java -Xloggc:/home/test/test.log -cp/home/test/Test

该文件的logrotate配置如下:

/home/test/test.log {
   rotate 56
   missingok
   notifempty
   copytruncate
   nocreate
   nomail
}

为了测试目的,我每分钟都有一个crontab条目记录:

*/1****/usr/sbin/logrotate -f /etc/logrotate.d/gcLog

我得出结论,JVM写入追加模式并保留某种偏移用于在相关文件中写下一行,即使文件被logrotate截断(我可能错了).


我的下一个想法是尝试将stdout重定向到test.log文件.我使用了这个java调用并为logrotate和cron保留了相同的配置:

java -verbose:gc -cp/home/test/Test> /home/test/test.log

再次,当log.ate截断test.log时,新创建的文件在第一行填充NUL(^ @)值.


没必要说我没有找到任何有用的谷歌.我发现了另一个关于stackoverflow类型的问题,但我无法设置Java Script Wrapper,所以这不起作用.

有人遇到过这个问题吗?知道为什么会这样吗?更好,任何变通方法或解决方案?我需要尝试将对应用程序的调用传递给读取输出的一些脚本,并且可能看看Tomcat在catalina.out中记录和旋转stdout的方式(这里也会非常感谢一些帮助)

java linux logging garbage-collection

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

在应用程序中记录GC信息

有没有办法将垃圾收集信息(例如-XX:+PrintGCDetails或的输出-verbose:gc)转发到Java应用程序中的记录器(在我的情况下为sl4j + logback)?

java logging garbage-collection jvm

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

标签 统计

java ×4

garbage-collection ×3

logging ×3

jvm ×2

java-8 ×1

linux ×1

named-pipes ×1

windows ×1