7得票1回答
发送SIGTERM信号到JVM是否安全?

尽管JVM会将SIGTERM和类似的信号转换为关闭挂钩,但许多服务关闭脚本使用TCP端口来启动关闭。(例如Tomcat的关闭端口,Java Service Wrapper,JBoss的管理接口等)。 因此,我认为使用信号和关闭挂钩来优雅地关闭Java服务并不被鼓励,直到我发现Play!框架正...

7得票3回答
Java实时应用的垂直扩展

通过GC调优,我成功地为实时Java应用程序提供了性能,并避免了可识别的GC暂停。但是,这只适用于 ~20 GB 的堆空间。 硬件成本的降低使得甚至拥有 100GB RAM 的机器也变得经济实惠。但是,由于 Java 中的 GC 暂停,在像 50 GB 这样的更高堆大小下,您可能会在常规时间...

24得票5回答
JVM内部如何处理竞态条件?

如果多个线程尝试更新同一个成员变量,就会发生竞态条件。但我更想知道如果我们不通过使其同步或使用其他方法在代码中处理它,JVM 如何在内部处理它?它会挂起我的程序吗?JVM 会如何对其作出反应?我认为 JVM 会暂时为此情况创建一个同步块,但我不确定具体会发生什么。 如果有人有一些见解,那就好了。

34得票7回答
卡桑德拉和Java 9 - ThreadPriorityPolicy=42超出了允许的范围

最近我从官网安装了JDK 9和Apache Cassandra。但是当我启动Cassandra时,现在会出现以下信息:apache-cassandra-3.11.1/bin$ ./cassandra -f [0.000s][warning][gc] -Xloggc is deprecated...

8得票2回答
在Android Studio日志中等待阻塞GC Alloc

我有一个相当大的双精度数组,例如1,71,00,000个元素。我需要遍历该数组,将数组分成大小为10k点的较小数组和剩余点(如果有)切片到最后一片。 我有一个基本代码: public static boolean getSliceOfArray(double[] arr,int slice...

12得票3回答
为什么Java默认情况下没有启用断言?

我的问题来自语言设计的角度。 为什么assert被特别对待,即它会引发一个错误而不是异常,它默认情况下没有启用等等。 这似乎很优雅(非常主观的意见),易于阅读(再次主观),用于执行验证非常方便,还有一些工具(IDE)可以实时评估它并基于断言提供警告。

14得票6回答
当Java抛出异常时,是否会生成堆栈跟踪?

假设我们不调用.printstacktrace方法-只是抛出和捕获异常。 我们正在考虑将其用于一些性能瓶颈。

15得票3回答
如何通过完整的类名获取Java类的二进制名称?

反射类和方法以及类加载器等需要使用类的所谓“二进制”名称才能正常工作。问题是,如果只有完全限定名称(即在源代码中使用的名称),如何获取二进制名称。例如:package frege; public static class RT { .... public static clas...

7得票3回答
在JVM上启用逃逸分析的经验分享

我刚刚在Solaris上运行了一个Scala应用程序,该程序有相当多的Actor(20,000个),并启用了JDK6-u18 VM(Java虚拟机)上的-XX:+DoEscapeAnalysis选项,但是结果令人失望。通常情况下,该应用程序可以使用256Mb的堆内存,但会生成大量垃圾。在其稳态...

14得票4回答
Java ZGC垃圾收集器使用了大量的内存。

我使用Springboot构建了一个简单的应用程序。当我在Linux服务器上部署时,我使用的ZGC垃圾回收器会使用很多内存。尽管我尝试将最大堆内存限制为500MB(使用Xmx500m),但JAVA程序仍然使用超过1GB的内存。而当我使用G1回收器时,只使用了350MB。我不知道原因是什么,是J...