文章分类 -  saturn及类加载器热加载内存泄漏

1 2 下一页

一次不引用包跑外部依赖的实践(七)代码
摘要:最前面2个静态变量,一个类加载器,一个锁 拿锁,如拿到则弄一下类加载器 一筐子反射 设置配置参数 Path是java公共类,所以140 142,而Logger不一样,取决于ParquetClassLoader与TomcatLoader是否平行 如果任务结束时,当前线程是interrupt状态,则抛错 阅读全文

posted @ 2025-04-21 23:14 silyvin 阅读(14) 评论(0) 推荐(0)

一次不引用包跑外部依赖的实践(六)代码打磨
摘要:会员 周边 新闻 博问 闪存 赞助商 Chat2DB 无 一次不引用包跑外部依赖的实践(八)异常 https://pan.baidu.com/s/1VmvAlknO87ev61ETKif_9g 1 异常没有往上抛,也没有打日志 2 可以不抛,但要打日志,并break(因为下一个future.get继 阅读全文

posted @ 2025-04-21 23:04 silyvin 阅读(28) 评论(0) 推荐(0)

一次不引用包跑外部依赖的实践(五)再次尝试突破双亲委派加载主加载器线程池
摘要:1 app-tomcat common tool1(不可信任) common others1(不可信任) tool2 -自定义加载器 common - 主加载器 others2 -自定义加载器 具体实施两种方案 1 构造无父加载器,与tomcat加载器平行,override findclass to 阅读全文

posted @ 2025-03-21 20:29 silyvin 阅读(24) 评论(0) 推荐(0)

一次不引用包跑外部依赖的实践(四)线程内存安全相关
摘要:future task cancel (二)向下传递中断【重要】- java object多大 java对象内存模型 数组有多长(十三) 内存泄漏事故 内存泄漏事故(二)线程的中断不可信任【重要】配合volatile强制回收子线程成员变量 内存泄漏事故(三)线程的interrupted flag 的 阅读全文

posted @ 2025-02-21 19:52 silyvin 阅读(5) 评论(0) 推荐(0)

一次不引用包跑外部依赖的实践(三)另一种获取运行期哪些jar被真实用到的方法
摘要:在一次maven构建类冲突解决方法论(二)加载顺序 中,使用了-XX:+TraceClassLoading打印哪些jar包被真实用到 我们还可以使用自定义classloader来 阅读全文

posted @ 2024-08-30 00:28 silyvin 阅读(13) 评论(0) 推荐(0)

一次不引用包跑外部依赖的实践(二)类加载器选择
摘要:1 完全独立 2 继承tomcat 3 第一点自己处理 因为用到的线程池在tomcat类加载器中static形式存在 因此如果findclass遇到相应的类,让他走到tomcat类加载器的类,实践下来不稳定 资源也自己处理,因为有些配置要走主加载器 阅读全文

posted @ 2024-08-17 12:16 silyvin 阅读(13) 评论(0) 推荐(0)

一次不引用包跑外部依赖的实践
摘要:c7aaa6007d37d29d3b94d9a420f710abebb1fdec 1 spi 解决方式:把invoke放到新线程 2 log4j 2.1 log4j让平行加载器tomcatwebappclassloader加载行不行, 如果log.info(a class only in sub c 阅读全文

posted @ 2024-07-04 00:16 silyvin 阅读(19) 评论(0) 推荐(0)

classloader getresource jar包资源冲突情况,父亲为大,兄弟之间,谁先加载谁牛逼(四)一次利用war在tomcat优先加载权得实践
摘要:war(仓库1) lib xxx core com.aaa.A类加两个字段,getter、setter core(仓库2) com.aaa.A 直接拷贝过来,全限定 背景:core无法及时deploy,war无法拿到最新core jar包解决:在war中将类和增加的字段以全限定性名拷贝到war下, 阅读全文

posted @ 2022-11-11 11:37 silyvin 阅读(29) 评论(0) 推荐(0)

new操作时调用当前线程的类加载器,还是调用方的类加载器 (四)完美证明用例
摘要:A cl1 { new thread().setClassLoader(cl2) new cl3 -> new B b.func { C c = new C } } 三个类加载器把C纳入可见范围内1 A C2 C3 B C /Users/joyce/work/MyTest/ClWhichClassL 阅读全文

posted @ 2022-06-29 14:59 silyvin 阅读(59) 评论(0) 推荐(0)

classloader getresource jar包资源冲突情况,父亲为大,兄弟之间,谁先加载谁牛逼(三)实践
摘要:Firstly, there is a critical java rule. Suppose there are 2 jars, A.jar and B.jar in the same classloader, which both contain a resource with the same 阅读全文

posted @ 2022-04-14 16:53 silyvin 阅读(98) 评论(0) 推荐(0)

load/find class 与 forname 在static代码块加载的不同 (三)双亲委派
摘要:loadClass的双亲委派我们已经很熟了,再来看看forName的双亲委派 设计代码结构: MyMain lc5 TestForName URLClassLoader(MySub) JustForName MySub lc5 JustForName MyMain: public class Tes 阅读全文

posted @ 2020-03-06 19:56 silyvin 阅读(229) 评论(0) 推荐(0)

load/find class 与 forname 在static代码块加载的不同 (二)非系统类jdbc
摘要:load/find class 与 forname 在static代码块加载的不同 上一篇说到: 既不用forName,又不用loadClass也可以; 经过JDBC SPI 类加载机制,我们发现,原来 DriverMagager的静态函数getConnection激发DriverManager的静 阅读全文

posted @ 2020-03-06 12:42 silyvin 阅读(218) 评论(0) 推荐(0)

类加载器顺序-另一种绕开双亲委派的方式(二)通篇改写loadClass
摘要:今天对类加载器顺序-另一种绕开双亲委派的方式中的第2种方式做一个实践,基本与JDBC注册原理与自定义类加载器解决com.cloudera.hive.jdbc41.HS2Driver的加载【重点】,使用resource中的jar包资源作为UrlClassloader(二)同,主要区别在于 这两篇文章侧 阅读全文

posted @ 2020-03-05 22:56 silyvin 阅读(356) 评论(0) 推荐(0)

类加载器顺序-另一种绕开双亲委派的方式【yetdone 危险的案例】and 加载顺序总结 and 三种绕开方式总结
摘要:类加载器 classpath 摘要认为: 加载顺序总结 MyClassLoader查看本加载器缓存,native findLoadedClass MyClassLoader交给父加载器loadclass MyClassLoader调用本类的findClass MyClassLoader调用本类的de 阅读全文

posted @ 2020-03-01 16:15 silyvin 阅读(330) 评论(0) 推荐(0)

new操作时调用当前线程的类加载器,还是调用方的类加载器 (三)
摘要:当进行new的时候,使用的是 1 当前代码所在类加载器 2 调用当前代码的代码所在类加载器 本文设计一个案例予以实践: 调用方在AppClassLoader系统类加载器(Reflection.getCallerClass().getClassLoader()) new 代码所在类加载器为MyUrlC 阅读全文

posted @ 2020-03-01 16:08 silyvin 阅读(537) 评论(0) 推荐(0)

new操作时调用当前线程的类加载器,还是调用方的类加载器 (二)
摘要:new操作时调用当前线程的类加载器,还是调用方的类加载器中,有个逻辑问题,显得论据并不充分 根据类加载器顺序-另一种绕开双亲委派的方式,可能以以下的顺序进行 new K(); 拿出当前线程类加载器 **查看本加载器缓存native findLoadedClass,无(因为此前没有findClass过 阅读全文

posted @ 2020-03-01 16:06 silyvin 阅读(347) 评论(0) 推荐(0)

类加载器阶段小结 2020.1.15 24:00
摘要:1.7 使用resource中的jar包资源作为UrlClassloader 文章1 由此引出maven打包非resources目录打不进去的问题 maven build resource 随笔1 load/find class 与 forname 在static代码块加载的不同 发现forName 阅读全文

posted @ 2020-01-20 23:06 silyvin 阅读(92) 评论(0) 推荐(0)

classloader getresource jar包资源冲突情况,父亲为大,兄弟之间,谁先加载谁牛逼(二)
摘要:getResources一起加载,URL.openStream public class LcProperty { public static void main(String [] x) throws IOException { } public static String read(String 阅读全文

posted @ 2020-01-14 18:21 silyvin 阅读(381) 评论(0) 推荐(0)

字节码加密(四)jar包解密后直接内存加载
摘要:参考使用resource中的jar包资源作为UrlClassloader(二)中第3中方式,通过伪造URL,我们终于得以解决内存byte数组直接用URLClassLoader加载的问题,不必将解密的jar包写入磁盘,造成密码泄露问题 package lc2; import lc3.ResourceC 阅读全文

posted @ 2020-01-12 14:30 silyvin 阅读(519) 评论(0) 推荐(0)

使用resource中的jar包资源作为UrlClassloader(二)
摘要:对于jar中jar,症结的关键在于,这个jar是在内存中的,更具体的,是在jvm的resource中,无法直接使用URLClassLoader 有两种类型方式、4种方法解决: 1 解压式-tomcat 2 3 4 jar中jar-springboot 核心的区别在于,一者从还是磁盘加载jar,一者从 阅读全文

posted @ 2020-01-10 23:09 silyvin 阅读(1249) 评论(0) 推荐(0)

1 2 下一页