def jol(args): """Java Object Layout""" joljar = mx.library('JOL_CLI').get_path(resolve=True) commands = [ 'estimates', 'externals', 'footprint', 'heapdump', 'heapdumpstats', 'idealpack', 'internals', 'shapes', 'string-compress', 'help' ] command = 'internals' if len(args) == 0: command = 'help' elif args[0] in commands: command, args = args[0], args[1:] # classpath operations if command in ['estimates', 'externals', 'footprint', 'internals']: candidates = mx.findclass( args, logToConsole=False, matcher=lambda s, classname: s == classname or classname.endswith( '.' + s) or classname.endswith('$' + s)) if len(candidates) > 0: args = mx.select_items(sorted(candidates)) if len(args) > 0: args = ['-cp', mx.classpath(jdk=mx.get_jdk())] + args mx.run_java([ '-javaagent:' + joljar, '-cp', joljar, 'org.openjdk.jol.Main', command ] + args)
def jol(args): """Java Object Layout""" joljar = mx.library('JOL_INTERNALS').get_path(resolve=True) candidates = mx.findclass(args, logToConsole=False, matcher=lambda s, classname: s == classname or classname.endswith('.' + s) or classname.endswith('$' + s)) if len(candidates) > 0: candidates = mx.select_items(sorted(candidates)) else: # mx.findclass can be mistaken, don't give up yet candidates = args mx.run_java(['-javaagent:' + joljar, '-cp', os.pathsep.join([mx.classpath(jdk=mx.get_jdk()), joljar]), "org.openjdk.jol.MainObjectInternals"] + candidates)
def jol(args): """Java Object Layout""" joljar = mx.library('JOL_INTERNALS').get_path(resolve=True) candidates = mx.findclass(args, logToConsole=False, matcher=lambda s, classname: s == classname or classname.endswith('.' + s) or classname.endswith('$' + s)) if len(candidates) > 0: candidates = mx.select_items(sorted(candidates)) else: # mx.findclass can be mistaken, don't give up yet candidates = args run_vm(['-javaagent:' + joljar, '-cp', os.pathsep.join([mx.classpath(), joljar]), "org.openjdk.jol.MainObjectInternals"] + candidates)