ABSTRACT
Unrestricted use of heap pointers makes software systems difficult to understand and to debug. To address this challenge, we developed PHALANX -- a practical framework for dynamically checking expressive heap properties such as ownership, sharing and reachability. PHALANX uses novel parallel algorithms to efficiently check a wide range of heap properties utilizing the available cores.
PHALANX runtime is implemented on top of IBM's Java production virtual machine. This has enabled us to apply our new techniques to real world software. We checked expressive heap properties in various scenarios and found the runtime support to be valuable for debugging and program understanding. Further, our experimental results on DaCapo and other benchmarks indicate that evaluating heap queries using parallel algorithms can lead to significant performance improvements, often resulting in linear speedups as the number of cores increases.
To encourage adoption by programmers, we extended an existing JML compiler to translate expressive JML assertions about the heap into their efficient implementation provided by PHALANX. To debug her program, a programmer can annotate it with expressive heap assertions in JML, that are efficiently checked by PHALANX.
- AFTANDILIAN, E., AND GUYER, S. Z. GC assertions: using the garbage collector to check heap properties. In PLDI (2009). Google ScholarDigital Library
- ALDRICH, J., KOSTADINOV, V., AND CHAMBERS, C. Alias annotations for program understanding. In OOPSLA (2002). Google ScholarDigital Library
- ANDERSEN, L. O. Program Analysis and Specialization for the C Programming Language. PhD thesis, DIKU, Univ. of Copenhagen, May 1994.Google Scholar
- ARNOLD, M., VECHEV, M. T., AND YAHAV, E. QVM: an efficient runtime for detecting defects in deployed systems. In OOPSLA (2008). Google ScholarDigital Library
- BAKER, H. G. 'Use-once' variables and linear objects -- storage management, reflection and multi-threading. SIGPLAN Notices 30, 1 (1995), 45--52. Google ScholarDigital Library
- BLACKBURN, S. M., GARNER, R., HOFFMAN, C., KHAN, A. M., MCKINLEY, K. S., BENTZUR, R., DIWAN, A., FEINBERG, D., FRAMPTON, D., GUYER, S. Z., HIRZEL, M., HOSKING, A., JUMP, M., LEE, H., MOSS, J. E. B., PHANSALKAR, A., STEFANOVIĆ, D., VANDRUNEN, T., VON DINCKLAGE, D., AND WIEDERMANN, B. The DaCapo benchmarks: Java benchmarking development and analysis. In OOPSLA (2006), pp. 169--190. Google ScholarDigital Library
- BOND, M. D., AND MCKINLEY, K. S. Bell: bit-encoding online memory leak detection. SIGOPS Oper. Syst. Rev. 40, 5 (2006), 61--72.Google ScholarDigital Library
- BOYAPATI, C., LISKOV, B., AND SHRIRA, L. Ownership types for object encapsulation. In POPL (2003), pp. 213--223. Google ScholarDigital Library
- CALCAGNO, C., DISTEFANO, D., O'HEARN, P., AND YANG, H. Compositional shape analysis by means of bi--abduction. In POPL (2009), pp. 289--300. Google ScholarDigital Library
- CHILIMBI, T. M., AND GANAPATHY, V. HeapMD: identifying heap-based bugs using anomaly detection. In ASPLOS (2006), pp. 219--228. Google ScholarDigital Library
- CLARKE, D. G. Object ownership and containment. PhD thesis, University of New South Wales, New South Wales, Australia, 2003. Google ScholarDigital Library
- CLARKE, D. G., POTTER, J. M., AND NOBLE, J. Ownership types for flexible alias protection. In OOPSLA (1998), pp. 48--64. Google ScholarDigital Library
- DISTEFANO, D., AND PARKINSON, M. J. jStar: towards practical verification for Java. In OOPSLA '08 (2008), pp. 213--226. Google ScholarDigital Library
- GROTHOFF, C., PALSBERG, J., AND VITEK, J. Encapsulating objects with confined types. ACM Trans. Prog. Lang. Syst. 29, 6 (2007), 32. Google ScholarDigital Library
- HAUSWIRTH, M., AND CHILIMBI, T. M. Low-overhead memory leak detection using adaptive statistical profiling. SIGPLAN Not. 39, 11 (2004), 156--164. Google ScholarDigital Library
- HOGG, J. Islands: aliasing protection in object-oriented languages. In OOPSLA '91 (New York, NY, USA, 1991), ACM, pp. 271--285. Google ScholarDigital Library
- JUMP, M., AND MCKINLEY, K. S. Cork: dynamic memory leak detection for garbage-collected languages. In POPL (2007), pp. 31--38. Google ScholarDigital Library
- LEAVENS, G. T., CHEON, Y., CLIFTON, C., RUBY, C., AND COK, D. R. How the design of JML accommodates both runtime assertion checking and formal verification. Sci. Comput. Program. 55, 1--3 (2005), 185--208. Google ScholarDigital Library
- LEV-AMI, T., AND SAGIV, M. TVLA: A framework for Kleene based static analysis. In SAS (2000), vol. 1824, pp. 280--301. Google ScholarDigital Library
- MICHAEL, M. M., VECHEV, M. T., AND SARASWAT, V. A. Idem-potent work stealing. In PPoPP '09 (2008), pp. 45--54. Google ScholarDigital Library
- MITCHELL, N. The runtime structure of object ownership. In ECOOP (2006), pp. 74--98. Google ScholarDigital Library
- MITCHELL, N., AND SEVITSKY, G. The causes of bloat, the limits of health. In OOPSLA (2007), pp. 245--260. Google ScholarDigital Library
- MÜLLER, P., AND RUDICH, A. Ownership transfer in universe types. In OOPSLA (2007), pp. 461--478. Google ScholarDigital Library
- NAIK, M., AIKEN, A., AND WHALEY, J. Effective static race detection for java. In PLDI (2006). Google ScholarDigital Library
- RODITTY, L. A faster and simpler fully dynamic transitive closure. In SODA (2003), pp. 404--412. Google ScholarDigital Library
- SAGIV, M., REPS, T., AND WILHELM, R. Parametric shape analysis via 3-valued logic. (TOPLAS) 24, 3 (2002), 217--298. Google ScholarDigital Library
- SHACHAM, O., VECHEV, M., AND YAHAV, E. Chameleon: adaptive selection of collections. In PLDI (2009), pp. 408--418. Google ScholarDigital Library
- STEENSGAARD, B. Points-to analysis in almost linear time. In POPL (1996), pp. 32--41. Google ScholarDigital Library
- YANG, H., LEE, O., BERDINE, J., CALCAGNO, C., COOK, B., DISTEFANO, D., AND O'HEARN, P. W. Scalable shape analysis for >systems code. In CAV (2008), pp. 385--398. Google ScholarDigital Library
Index Terms
- PHALANX: parallel checking of expressive heap assertions
Recommendations
PHALANX: parallel checking of expressive heap assertions
ISMM '10Unrestricted use of heap pointers makes software systems difficult to understand and to debug. To address this challenge, we developed PHALANX -- a practical framework for dynamically checking expressive heap properties such as ownership, sharing and ...
A Multithreaded Concurrent Garbage Collector Parallelizing the New Instruction in Java
IPDPS '02: Proceedings of the 16th International Symposium on Parallel and Distributed ProcessingParallel, multithreaded Java applications such as web servers, database servers, and scientific applications are becoming increasingly prevalent. Most of them have high object instantiation rates through the new bytecode that is implemented in a garbage ...
Just-in-time compiler assisted object reclamation and space reuse
NPC'10: Proceedings of the 2010 IFIP international conference on Network and parallel computingGarbage collection consumes significant overhead to reclaim memory used by dead (i.e., unreachable) objects in applications. This paper explores techniques for compiler assisted object reclamation and allocation on an actual JVM. Thereinto, the just-in-...
Comments