文档介绍:Improving64-pressedReferencesPramodRamaraoTestarossaJITTeamIBMTorontoLabIBMTorontoLab-pressedReferencesMigrationfrom32-bitto64-bitnotfreePerformancepenalties:additionalcache,TLBmisses&pagingEspeciallysevereoncache-paredto32-bitApplicationsthatusedtofitin32-,performancefor64-bitwastobewithin5%of32-bitMemoryfootprintwastobewithin10%paredto32-bit64-bitSDKperformancegaponIntel/AMD>3xworsethangoalsMemoryfootprintgapwas3xworsethangoalsCacheeffects30%morecachemisseson64-bitObservationfromprofiles4IBMTorontoLabJ9ObjectLayout32-bitObject(24bytes)64-bitObject(48bytes–2X)OBJECTHEADERintfieldreffieldreffieldOBJECTHEADER+PADintfieldPadreffieldreffieldClassmyObj{intmyInt;myObjmyField1;ObjectmyField2;}pressedReferences:pressreferences(fields)pressobjectheaderMainideaistostore32-bitoffsetinsteadof64-pressatstoresoffields6IBMTorontoLabJ9ObjectLayout(cont…)32-bitObject(24bytes)64-bitObject(48bytes–2X)64-pressedReferences(24bytes)OBJECTHEADERintfieldreffieldreffieldOBJECTHEADER+PADintfieldPadreffieldreffieldOBJECTHEADERintfieldrefoffsetrefoffsetUse32-bitvalues(offsets)torepresentobjectfieldsWithscaling,between4GBand32GBcanbeaddressedClassmyObj{intmyInt;myObjmyField1;ObjectmyField2;}7IBMTorontoLabImplementationInitialImplementationNorestrictiononplacementofJavaheapinaddressspace(pressionissubtract:(64-bitaddress–Heap_base)pressionisadd:(32-bitoffset+Heap_base)SignificantoverheadonsomeplatformsIncreaseinpathlengthduetoadd/subNeedtohandleNULLvalues8IBMTorontoLabImplementationinIBMJDKforJava6Javaheapplacedin0-4GBrangeofaddressspace32-bitoffsetinobjectissimplytheaddressin0-pression (64-bit→32-bit) :pression (32-bit→64-bit) :zero-extensionMaximumallowableheapintheoryis4GBInpractice,themaximumheapavailableislower~pressionin64-bitJavaJDK-pressedReferencesLoadofareferencefieldfromano