中了源码的毒
|
代码分析:
乍一看这代码好像没有什么问题,那为什么会导致服务GC后内存还高居不下呢? 代码中给threadLocal赋值了一个大的对象,但是执行完业务逻辑后没有调用remove方法,最后导致线程池中10个线程的threadLocals变量中包含的大对象没有被释放掉,出现了内存泄露。 大家说说这样的实习生还能留不? ThreadLocal的value值存在哪里? 实习生说他以为线程任务结束了threadLocal赋值的对象会被JVM垃圾回收,很疑惑为什么会出现内存泄露。作为师傅我肯定要给他把原理讲透呀。 ThreadLocal类提供set/get方法存储和获取value值,但实际上ThreadLocal类并不存储value值,真正存储是靠ThreadLocalMap这个类,ThreadLocalMap是ThreadLocal的一个静态内部类,它的key是ThreadLocal实例对象,value是任意Object对象。
ThreadLocalMap类的定义 ThreadLocal使用不规范,师傅两行泪 组内来了一个实习生,看这小伙子春光满面、精神抖擞、头发微少,我心头一喜:绝对是个潜力股。于是我找经理申请亲自来带他,为了帮助小伙子快速成长,我给他分了一个需求,这不需求刚上线几天就出网上问题了😭后台监控服务发现内存一直在缓慢上升,初步怀疑是内存泄露。
把实习生的PR都找出来仔细review,果然发现问题了。由于公司内部代码是保密的,这里简单写一个demo还原场景(忽略代码风格问题)。 规定AI作品的版权属于“进行必要程序者”,同时也明确界定了对计算机生成作品“进行必要程序者”,即包括程序员、使用者,也可能是人工智能系统或设备的投资者。 2017年,世界知识产权组织(WIPO)杂志提到:如果一部作品的创作过程中“人类的参与有限,或根本没有人类参与”,著作权法可以有两种潜在的生效方式--著作权法可以“拒绝”对计算机生成的作品进行版权保护,也可以将此类作品的作者归属于程序的创建者。现在国内解决此类问题也基本沿袭这个思路。 2018年,上海一家公司未经过授权,将腾讯开发的自动化编写程序Dream writer生成的财务报告复制到该公司网站。深圳市南山区法院裁定,该公司因侵犯腾讯的版权而需承担民事责任,向腾讯公司赔偿1500元人民币。 中国现行的《著作权法》尚未明确界定AI作品的版权归属,这一裁定可能是AI创作领域的重要里程碑。《著作权法》:“著作权是著作权法赋予民事主体对作品及相关客体所享有的权利。”其中,民事主体指公民、法人或非法人组织。《著作权法》保护的对象是作为民事主体的独创性思想表达,并非民事主体的AI无法单独享有著作权,但只要在作者名录加上人类作曲家或研发者的名字就能解决此问题。人工智能虽无法成为受法律保护的主体,但对其作品版权的保护也开始受到法律认可。 没有感情的辅助器-方舟的航向 人工智能作曲技术的日渐成熟,在音乐行业掀起一股不小的浪潮。尽管人工智能已经实现通过读取、记忆大量乐曲获取规律,计算音符节奏的出现概率并排列组合来“创造”音乐。但音乐的核心并非音乐本身而是“人”,音乐源于人类情感流动。《礼记·乐记》对音乐起源的解释非常贴切:“凡音之起,由人心生也。人心之动,物使之然也。感于物而动,故形于声;声相应,故生变;变成方,谓之音。”作曲家和演奏者透过旋律、节奏表达的情绪与观众聆听音乐引起的共鸣,这种藉由音符实现的,跨越时间、空间与种族的情感交流才是音乐存在的意义,也是莫扎特、贝多芬等音乐家流芳百世的根本原因。 从某种角度来说,由于音乐是人类抒发心情的一种方式,让没有感情的人工智能作曲或许可以说是一个伪命题。人工智能不具备情感,不了解音符、节奏等音乐表层结构和基于情绪表达的音乐深层逻辑之对应关系,其制作的音乐只是基于概率所排列的音符。
无论算法作曲技术发展得多么成熟,音乐作为人类情感交流的艺术形式之一,AI所作的乐曲必然无法完全取代人类音乐作品在社会中的功能和角色,人工智能也无法替代行业内顶尖的音乐创作者及表演者。不仅是音乐,在美术、文学等艺术创作中皆是如此。 (编辑:甘孜站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |

