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 Scholar
Digital Library
- ALDRICH, J., KOSTADINOV, V., AND CHAMBERS, C. Alias annotations for program understanding. In OOPSLA (2002). Google Scholar
Digital 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 Scholar
Digital Library
- BAKER, H. G. 'Use-once' variables and linear objects -- storage management, reflection and multi-threading. SIGPLAN Notices 30, 1 (1995), 45--52. Google Scholar
Digital 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 Scholar
Digital 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 Scholar
Digital Library
- BOYAPATI, C., LISKOV, B., AND SHRIRA, L. Ownership types for object encapsulation. In POPL (2003), pp. 213--223. Google Scholar
Digital 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 Scholar
Digital Library
- CHILIMBI, T. M., AND GANAPATHY, V. HeapMD: identifying heap-based bugs using anomaly detection. In ASPLOS (2006), pp. 219--228. Google Scholar
Digital Library
- CLARKE, D. G. Object ownership and containment. PhD thesis, University of New South Wales, New South Wales, Australia, 2003. Google Scholar
Digital Library
- CLARKE, D. G., POTTER, J. M., AND NOBLE, J. Ownership types for flexible alias protection. In OOPSLA (1998), pp. 48--64. Google Scholar
Digital Library
- DISTEFANO, D., AND PARKINSON, M. J. jStar: towards practical verification for Java. In OOPSLA '08 (2008), pp. 213--226. Google Scholar
Digital Library
- GROTHOFF, C., PALSBERG, J., AND VITEK, J. Encapsulating objects with confined types. ACM Trans. Prog. Lang. Syst. 29, 6 (2007), 32. Google Scholar
Digital Library
- HAUSWIRTH, M., AND CHILIMBI, T. M. Low-overhead memory leak detection using adaptive statistical profiling. SIGPLAN Not. 39, 11 (2004), 156--164. Google Scholar
Digital Library
- HOGG, J. Islands: aliasing protection in object-oriented languages. In OOPSLA '91 (New York, NY, USA, 1991), ACM, pp. 271--285. Google Scholar
Digital Library
- JUMP, M., AND MCKINLEY, K. S. Cork: dynamic memory leak detection for garbage-collected languages. In POPL (2007), pp. 31--38. Google Scholar
Digital 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 Scholar
Digital Library
- LEV-AMI, T., AND SAGIV, M. TVLA: A framework for Kleene based static analysis. In SAS (2000), vol. 1824, pp. 280--301. Google Scholar
Digital Library
- MICHAEL, M. M., VECHEV, M. T., AND SARASWAT, V. A. Idem-potent work stealing. In PPoPP '09 (2008), pp. 45--54. Google Scholar
Digital Library
- MITCHELL, N. The runtime structure of object ownership. In ECOOP (2006), pp. 74--98. Google Scholar
Digital Library
- MITCHELL, N., AND SEVITSKY, G. The causes of bloat, the limits of health. In OOPSLA (2007), pp. 245--260. Google Scholar
Digital Library
- MÜLLER, P., AND RUDICH, A. Ownership transfer in universe types. In OOPSLA (2007), pp. 461--478. Google Scholar
Digital Library
- NAIK, M., AIKEN, A., AND WHALEY, J. Effective static race detection for java. In PLDI (2006). Google Scholar
Digital Library
- RODITTY, L. A faster and simpler fully dynamic transitive closure. In SODA (2003), pp. 404--412. Google Scholar
Digital Library
- SAGIV, M., REPS, T., AND WILHELM, R. Parametric shape analysis via 3-valued logic. (TOPLAS) 24, 3 (2002), 217--298. Google Scholar
Digital Library
- SHACHAM, O., VECHEV, M., AND YAHAV, E. Chameleon: adaptive selection of collections. In PLDI (2009), pp. 408--418. Google Scholar
Digital Library
- STEENSGAARD, B. Points-to analysis in almost linear time. In POPL (1996), pp. 32--41. Google Scholar
Digital 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 Scholar
Digital Library
Index Terms
PHALANX: parallel checking of expressive heap assertions
Recommendations
PHALANX: parallel checking of expressive heap assertions
ISMM '10: Proceedings of the 2010 international symposium on Memory managementUnrestricted 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