论文部分内容阅读
随着互联网的普及,基于Web的应用需要越来越强大的并发能力来应对用户的请求。Java语言是最早原生支持并发的主流程序设计语言,在Web领域有着广泛的应用。其内存模型是保证Java多线程程序正确性及高效性的关键。 设计正确的内存模型是非常困难的。Java最初的设计中就已经包含了内存模型的内容,但随后被发现一些严重的错误。在Java5.0中发布了最新的内存模型,并且一直沿用至今,但设计规范中仍然存在一些与设计目的不一致的地方。并发模块是Java虚拟机实现中最为复杂的部分之一,目前对Java内存模型的验证多数属于静态验证,并不能保证它在虚拟机中实现的正确性。所以通过动态验证的方式验证Java内存模型有着非常重要的意义。 设计并实现了Java内存模型动态验证系统JMODV。它随机生成Java多线程程序,然后对程序进行编译,并在Java虚拟机上运行。通过JVMTI编写了一个代理,通过这个代理获取程序运行时的操作路径,操作路径包含了程序共享变量的读写操作次序及操作值。根据Java内存模型的规定,使用遍历的方法构建符合要求的执行序列,以此确定操作路径是否有效,从而验证Java内存模型的正确性。使用JMODV对20个Java内存模型正确性的经典测试用例进行了检测,实验结果表明,的工具是有效的。与此同时,对三种不同的Java虚拟机进行了验证,结果表明工具具有良好的兼容性。 本文的主要贡献在于:实现了一个全自动的Java内存模型验证系统,可以对Java虚拟机的具体实现进行验证;提出了一种获取Java并发程序执行时操作路径的方法,该方法具有通用性,可以被其它动态验证方法所采用。