Memoised Garbage Collection for Software Model Checking

  • Viet Yen Nguyen
  • Theo C. Ruys
Part of the Lecture Notes in Computer Science book series (LNCS, volume 5505)


Virtual machine based software model checkers like jpf and MoonWalker spend up to half of their verification time on garbage collection. This is no surprise as after nearly each transition the heap has to be cleaned from garbage. To improve this, this paper presents the Memoised Garbage Collection (MGC) algorithm, which exploits the (typical) locality of transitions to incrementally perform garbage collection. MGC tracks the depths of objects efficiently and only purges objects whose depths have become infinite, hence unreachable. MGC was experimentally evaluated via an implementation in our model checker MoonWalker and benchmarks using the parallel Java Grande Forum benchmark suite. By using MGC, a performance increase up to 78% was measured over the traditional Mark&Sweep implementation.


Model Check Object Reference Garbage Collection Assertion Violation Software Model Check 
These keywords were added by machine and not by the authors. This process is experimental and the keywords may be updated as the learning algorithm improves.


  1. 1.
    Aan de Brugh, N.H.M.: Software Model Checking for Mono. Master’s thesis, University of Twente, Enschede, The Netherlands (August 2006)Google Scholar
  2. 2.
    Aan de Brugh, N.H.M., Ruys, T.C., Nguyen, V.Y.: MoonWalker: Verification of .NET Programs. In: Kowalewski, S., Philippou, A. (eds.) TACAS 2009. LNCS, vol. 5505, pp. 170–173. Springer, Heidelberg (2009)Google Scholar
  3. 3.
    Cherkassky, B.V., Goldberg, A.V., Silverstein, C.: Buckets, Heaps, Lists, and Monotone Priority Queues. In: Saks, M. (ed.) SODA 1997: Proceedings of the eighth annual ACM-SIAM symposium on Discrete algorithms, Philadelphia, PA, USA, pp. 83–92. Society for Industrial and Applied Mathematics (1997)Google Scholar
  4. 4.
    Corbett, J.C., Dwyer, M.B., Hatcliff, J., Bandera, R.: A Source-Level Interface for Model Checking Java Programs. In: ICSE 2000, pp. 762–765 (2000)Google Scholar
  5. 5.
    Dijkstra, E.: A Note on Two Problems in Connexion with Graphs. In: Numerische Mathematik, vol. 1, pp. 269–271 (1959)Google Scholar
  6. 6.
    Elmas, T., Qadeer, S., Tasiran, S.: Goldilocks: Efficiently Computing the Happens-Before Relation Using Locksets. In: Havelund, K., Núñez, M., Roşu, G., Wolff, B. (eds.) FATES 2006 and RV 2006. LNCS, vol. 4262, pp. 193–208. Springer, Heidelberg (2006)CrossRefGoogle Scholar
  7. 7.
    Flanagan, C., Godefroid, P.: Dynamic Partial-Order Reduction for Model Checking Software. In: Palsberg, J., Abadi, M. (eds.) POPL 2005, pp. 110–121. ACM, New York (2005)Google Scholar
  8. 8.
    Grieskamp, W., Tillmann, N., Schulte, W.: XRT- Exploring Runtime for. NET Architecture and Applications. In: Cook, B., Stoller, S., Visser, W. (eds.) Proceedings of the Workshop on Software Model Checking, SoftMC 2005. Electr. Notes Theor. Comput. Sci., vol. 144, pp. 3–26 (2006)Google Scholar
  9. 9.
    Havelund, K.: Java PathFinder, A Translator from Java to Promela. In: Dams, D.R., Gerth, R., Leue, S., Massink, M. (eds.) SPIN 1999. LNCS, vol. 1680, p. 152. Springer, Heidelberg (1999)CrossRefGoogle Scholar
  10. 10.
    Holzmann, G.J.: The Spin Model Checker – Primer and Reference Manual. Addison-Wesley, Boston (2004)Google Scholar
  11. 11.
    Iosif, R.: Exploiting Heap Symmetries in Explicit-State Model Checking of Software. In: ASE 2001, pp. 254–261. IEEE Computer Society, Los Alamitos (2001)Google Scholar
  12. 12.
    Iosif, R.: Symmetry Reductions for Model Checking of Concurrent Dynamic Software. STTT 6(4), 302–319 (2004)CrossRefGoogle Scholar
  13. 13.
    Iosif, R., Sisto, R.: Using Garbage Collection in Model Checking. In: Havelund, K., Penix, J., Visser, W. (eds.) SPIN 2000. LNCS, vol. 1885, pp. 20–33. Springer, Heidelberg (2000)CrossRefGoogle Scholar
  14. 14.
    Jones, R., Lins, R.: Garbage Collection. John Wiley & Sons, Chichester (1996)zbMATHGoogle Scholar
  15. 15.
    Lerda, F., Visser, W.: Addressing Dynamic Issues of Program Model Checking. In: Dwyer, M.B. (ed.) SPIN 2001. LNCS, vol. 2057, pp. 80–102. Springer, Heidelberg (2001)CrossRefGoogle Scholar
  16. 16.
    McCarthy, J.: Recursive Functions of Symbolic Expressions and Their Computation by Machine, Part I. Communications of the ACM 3(4), 184–195 (1960)CrossRefzbMATHGoogle Scholar
  17. 17.
    Musuvathi, M., Dill, D.L.: An Incremental Heap Canonicalization Algorithm. In: Godefroid, P. (ed.) SPIN 2005. LNCS, vol. 3639, pp. 28–42. Springer, Heidelberg (2005)CrossRefGoogle Scholar
  18. 18.
    Nguyen, V.Y.: Optimising Techniques for Model Checkers. Master’s thesis, University of Twente, Enschede, The Netherlands (December 2007)Google Scholar
  19. 19.
    Ramalingam, G., Reps, T.W.: An Incremental Algorithm for a Generalization of the Shortest-Path Problem. Journal Algorithms 21(2), 267–305 (1996)MathSciNetCrossRefzbMATHGoogle Scholar
  20. 20.
    Robby, Dwyer, M.B., Hatcliff, J.: Domain-specific Model Checking Using The Bogor Framework. In: ASE 2006, pp. 369–370. IEEE Computer Society, Los Alamitos (2006)Google Scholar
  21. 21.
    Ruys, T.C., Aan de Brugh, N.H.M.: MMC: the Mono Model Checker. Electr. Notes Theor. Comput. Sci. 190(1), 149–160 (2007); Proc. of Bytecode 2007CrossRefGoogle Scholar
  22. 22.
    Smith, L.A., Bull, J.M., Obdrzálek, J.: A Parallel Java Grande Benchmark Suite. In: ACM/IEEE Conference on Supercomputing (SC 2001). ACM, New York (2001)Google Scholar
  23. 23.
    Visser, W., Havelund, K., Brat, G.P., Park, S.: Model Checking Programs. In: ASE 2000, pp. 3–12. IEEE Computer Society, Los Alamitos (2000)Google Scholar
  24. 24.
    The Java Grande Forum Benchmark Suite,
  25. 25.
  26. 26.

Copyright information

© Springer-Verlag Berlin Heidelberg 2009

Authors and Affiliations

  • Viet Yen Nguyen
    • 1
  • Theo C. Ruys
    • 2
  1. 1.RWTH Aachen UniversityGermany
  2. 2.University of TwenteThe Netherlands

Personalised recommendations