为什么这个Python脚本会耗尽内存?
我对Python几乎一无所知,所以我来这里请教大家怎么解决这个问题。我会提供一些文件片段,这些应该足够你们解决这个问题。
main.py - 负责所有的日志记录,完成所有的工作
commands.logger.info('> Applying SpecialSource')
commands.applyss(side, keep_lvt=keep_lvt, keep_generics=keep_generics)
commands.py - 包含所有的定义
def applyss(self, side, reobf=False, srg_names=False, in_jar=None, out_jar=None, keep_lvt=False, keep_generics=False):
"""Apply ss to the given side"""
cplk = {CLIENT: self.cpathclient, SERVER: self.cpathserver}
cfgsrg = {CLIENT: self.srgsclient, SERVER: self.srgsserver}
deobsrg = {CLIENT: self.deobsrgclient, SERVER: self.deobsrgserver}
reobsrg = {CLIENT: self.reobsrgclient, SERVER: self.reobsrgserver}
rsrgsrg = {CLIENT: self.reobsrgclientsrg, SERVER: self.reobsrgserversrg}
if in_jar is None:
if reobf:
in_jar = {CLIENT: self.cmpjarclient, SERVER: self.cmpjarserver}[side]
else:
in_jar = {CLIENT: self.jarclient, SERVER: self.jarserver}[side]
if out_jar is None:
if reobf:
out_jar = {CLIENT: self.reobfjarclient, SERVER: self.reobfjarserver}[side]
else:
out_jar = {CLIENT: self.rgclientout, SERVER: self.rgserverout}[side]
if reobf:
cmd = self.cmdssreobf
if srg_names:
identifier = 'RGMCPSRG'
srg = rsrgsrg[side]
else:
identifier = 'RGMCP'
srg = reobsrg[side]
else:
cmd = self.cmdss
identifier = None
srg = cfgsrg[side]
# add specialsource.jar to copy of client or server classpath
sscp = [self.specialsource] + cplk[side]
sscp = os.pathsep.join(sscp)
forkcmd = cmd.format(classpath=sscp, injar=in_jar, outjar=out_jar, identifier=identifier, mapfile=srg)
if not keep_lvt:
forkcmd += ' --kill-lvt'
if not keep_generics:
forkcmd += ' --kill-generics'
try:
self.runcmd(forkcmd)
if not reobf:
shutil.copyfile(cfgsrg[side], deobsrg[side])
shutil.copyfile(deobsrg[side], reobsrg[side])
except CalledProcessError as ex:
self.logger.error('')
self.logger.error('== ERRORS FOUND ==')
self.logger.error('')
for line in ex.output.splitlines():
if line.strip():
if line[0] != '#':
self.logger.error(line)
self.logger.error('==================')
self.logger.error('')
raise
如果你还没搞明白,这个是MCP,也就是Minecraft Coder Pack。问题是,在反编译服务器的jar文件时,在> Applying SpecialSource
这个阶段,它会出现内存不足的情况。我不知道哪里会有类似java -jar SpecialSource.jar
这样的内容,希望你们能告诉我该去哪里找。
1 个回答
1
先检查一下你的Python是不是最新版本,还有你用的是什么操作系统?我之前也遇到过这个问题,原因是软件过时了,还有MCP把一些库搞错成了Windows,所以导致了一些混乱。如果你是在Mac或者Linux上,可以在你的MCP文件夹里找找“windows”这个词,然后把它换成你自己操作系统的名字。这样做对我有用。