【发布时间】:2018-07-07 19:09:36
【问题描述】:
我想向我的学生证明,在实时系统中使用 Java 可能会出现问题,因为 Java 可能会进行意外的垃圾收集。我如何编写一个 Java 程序:
- 可能会导致 Java 在意外时间停止并执行垃圾收集(没有 System.gc());
- 垃圾收集需要很长的时间(例如几秒钟)?
如果这很重要,我在 Ubuntu 16.04 上使用 Open JDK 8 和 Oracle JDK 8。
如果不能同时做到这两个,那么我至少会满意第 2 项,即当我执行 System.gc() 时垃圾收集需要很长时间的程序。
注意:我不是在寻找垃圾收集过程的图形表示 - 只是为了表明它需要很长时间。
【问题讨论】:
-
那么到目前为止你尝试过什么?
-
这……很难。如果不知道 Open JDK 8 在内部是如何工作的,那将是不可能的。另外...对于(2),您可以让 finalize 函数等待几秒钟(???)
-
如果您愿意,您可以随时通过您最喜欢的分析工具触发 GC。
-
Oracle 有一个垃圾收集指南,其中包含一个动手演示应用程序:oracle.com/webfolder/technetwork/tutorials/obe/java/gc01/… - 我不能说我已经尝试过了,但它可能值得一看。
标签: java garbage-collection demo