我需要调查Java客户端应用程序的崩溃.它是Swing应用程序,在Windows上的Java SE 6 Update 23上运行Java Web Start环境.不幸的是,对于某些崩溃情况,未创建hs_err_pid文件.它不在桌面上,所以我在PC上搜索它并没有找到它(桌面上有一个旧的hs_err_pid文件,对于同一个应用程序,所以假设应该创建一个新文件是合理的那里也是).最后在日志中没有异常,因为它通常在JVM在Java异常崩溃时发生,所以它看起来像是一个崩溃,应该导致创建hs_err_pid文件.
我需要配置一些东西才能使它工作吗?Dr. Watson的配置是否会影响hs_err_pid文件的创建?
谢谢
我们配置了Dr'Watson并分析了核心转储文件,该文件是在应用程序再次崩溃后创建的.我看到的错误是"访问冲突".从堆栈跟踪中我可以看到崩溃是由我们使用的第三方的本机代码中的异常引起的.这足以将问题委托给他们.
结论:
1.JVM未按预期处理某些Java崩溃,因此未创建hs_err_pid文件.
2.配置操作系统以创建核心转储可以在这些情况下提供帮助,因为操作系统将处理未由JVM处理的崩溃.在这种情况下,您将获得更少的信息,但它仍然有用.
我需要复制一个文件夹,在运行时打包在Jar中.我想通过调用同样包含在同一文件夹中的类中的函数来实现.
我尝试过使用getSystemResource:
URL sourceDirUrl = ClassLoader.getSystemResource("sourceDirName");
File sourceDir = new File(sourceDirUrl.toURI());
Run Code Online (Sandbox Code Playgroud)
但它不起作用.我可能必须getResourceAsStream递归使用函数.有没有更优雅/更直接的方式来做到这一点?
如果我必须递归地执行:1.我不想指定硬编码的文件,我想动态地执行2.我不想创建单独的存档.我希望这个资源与处理它的类在同一个Jar中
谢谢
我最终做了Koziołek在下面提出的建议.虽然我希望有一个更优雅的解决方案,但它看起来像它一样好.
问题:
我需要实现多个共享序列生成器,将被 50-100 个 Tomcat 服务器使用。每个序列生成器应从 1 开始,并在每次请求后加 1。序列生成器实现应该有原子增量命令。Java 客户端应该可用。
规模:
多达 50000 个序列生成器被积极使用,对于它们中的每一个,我们预计在 5-10 秒内有一个增量请求。每秒最多 20000 个请求
50-100 个 java 客户端(Tomcat 服务器)。对序列生成器的访问在这些服务器之间共享。重要提示:只有 2 个客户端使用相同的序列生成器。
50-100 次 - 每个序列生成器的平均使用次数。
24 小时 TTL - 生成器最多应在创建后 24 小时后清理 - 因此实际上可能有超过 50000 个序列生成器,但预计最多只能有 50000 个同时主动接收请求。
性能:
<1ms 更可取的平均响应时间。平均超过 2ms 肯定不够好。
我们排除了 Oracle 的 Sequence 对象。
我们目前正在考虑 Redis 和 Memcached。
两者都很快。
推荐/足够好的实现是什么?
是否有其他更好的技术用于此目的?
另一个重要问题:
incr、Redis 或 Memcached 哪个性能更好?
谢谢