本月博客排行
-
第1名
龙儿筝 -
第2名
lerf -
第3名
fantaxy025025 - johnsmith9th
- zysnba
- xiangjie88
年度博客排行
-
第1名
青否云后端云 -
第2名
宏天软件 -
第3名
gashero - wy_19921005
- vipbooks
- benladeng5225
- e_e
- wallimn
- javashop
- ranbuijj
- fantaxy025025
- jickcai
- gengyun12
- zw7534313
- qepwqnp
- 解宜然
- ssydxa219
- zysnba
- sichunli_030
- sam123456gz
- arpenker
- tanling8334
- kaizi1992
- gaojingsong
- 龙儿筝
- xpenxpen
- jh108020
- wiseboyloves
- ganxueyun
- xyuma
- xiangjie88
- wangchen.ily
- Jameslyy
- luxurioust
- lemonhandsome
- mengjichen
- jbosscn
- zxq_2017
- lzyfn123
- nychen2000
- forestqqqq
- wjianwei666
- ajinn
- zhanjia
- Xeden
- hanbaohong
- java-007
- 喧嚣求静
- mwhgJava
- kingwell.leng
最新文章列表
【Do家】通过Groovy动态加载Script类对象分析class object GC和unloaded Class关系
实际场景数据如下:
# jstat -gccause 73 3000 10
S0 S1 E O M CCS YGC YGCT FGC FGCT GCT LGCC GCC
20.38 0.00 84.24 40.49 94.09 89. ...
被import 的类何时被哪个ClassLoader装载 &RestartClassLoader导致 java.lang.LinkageError错误
问题1:被import的class是什么时候加载,用哪个classLoader 加载?
问题2: spring 的开发热部署工具devtools 是如何导致 java.lang.LinkageError 的呢?
针对问题1:
测试代码为:
public class Parent {
static{
System.out.println("parent static. ...
java 类的加载 以及 ClassLoader
Class Loader 类加载器:
类加载器负责加载 JAVA 类的字节代码到JAVA 虚拟机中,可以根据指定的类名(如java.lang.Object)来装载class文件的内容到Runtime data area中的method area(方法区域)。JAVA程序员可以extends java.lang.ClassLoader类来写自己的Class loader。
类加载器负责加载所 ...
自定义类加载器与spring的集成
之前也学习过自定义类加载器,通过ClassLoader直接加载需要的类。但实际业务中启动入口常常不可控,比如实际业务中我们常常使用spring对类实例进行管理。如何在spring中集成自定义ClassLoader是需要我们考虑的问题。结合之前项目单机部署的一个方案,即class加密,自定义类加载器解密。因此,我们需要解决两个个问题:
1、自定义类加载器
2、spring与类加载器的集成
sprin ...
自定义ClassLoader
进行实验
以下代码使用一个自定义类加载器,输出类加载器的层级结构和当前实例使用的类加载器
Class cl=new DefinedClassLoader("d:/").loadClass("HelloWorldServiceImpl");
HelloWorldService helloWorldService=(HelloWorldService)cl.ne ...
如何实现web项目单机部署
实现目标
实现项目部署包仅能在指定服务器部署,不可更改。更换位置,无法正常启动和访问。目前还没有完美的解决方案,有些思路还待验证。
实现方案
校验规则
校验当前服务器mac地址是否匹配
启动报错提示
方案1:自定义servlet,load-on-startup设置为0,在init方法中校验
方案2:定义ServletContextListener,在contextInitialized方法中 ...
java classloader 浅析
本文只涉及java 的classloader体系以及classloader对class的加载行为,不涉及一个class的加载过程和生命周期ClassLoader 层级jvm classloader 分为3层,顶层是拿C语言 ...
Java之 ClassLoader 和 class 加载过程
Java 的 Class 加载 步骤
一、背景知识
1. java.lang.ClassLoader类介绍
<Abstract> java.lang.ClassLoader
java.lang.ClassLoader 类的基本职责就是根据一个指定的类的名称,找到其对应的二进制字节代码文件。
然后根据这个文件,生成一个 jav ...
Java自定义Class加载顺序
思路一 :打破双亲加载
1、在Java中默认的Class加载顺序都是父类委托加载,但是有些时候需要自定义加载顺序比如OSGI和ali的Pandora。
2、父类委托加载的基本实现思路,loadClass中在parent中查找class,要是不存在parent则使用findBootstrapClassOrNull调用native方法,要是找不到,使用其中findClass去查找。
3、普通自定义 ...
深入分析ClassLoader
转(原文http://blog.csdn.net/xyang81/article/details/7292380)
一、什么是ClassLoader?
大家都知道,当我们写好一个Java程序之后,不是管是CS还是BS应用,都是由若干个.class文件组织而成的一个完整的Java应用程序,当程序在运行时,即会调用该程序的一个入口函数来调用系统的相关功能,而这些功能都被封装在 ...
类加载器的双亲委派模型
双亲委派模型
从Java虚拟机的角度来讲,只存在两种不同的类加载器:一种是启动类加载器(Bootstrap ClassLoader),这个类加载器使用C++实现,时虚拟器自身的一部分;另一种就是所有其他的类加载器,这类加载器都由Java实现,独立于虚拟机外部,并且都继承自抽象类java.lang.ClassLoader。
从开发人员的角度来看,类加载器还可以划分的更细致一些,绝大部 ...
教您使用DynamicGecco抓取JD全部商品信息
关于gecco爬虫框架
如果对gecco还没有了解可以参看一下gecco的github首页。gecco爬虫十分的简单易用。之前有一篇文章《教您使用java爬虫gecco抓取JD商品信息》,使用的是传统的注解方式,建议看这篇文章前先了解之前的文章。这里介绍一下DynamicGecco方式,比之前更简单,抓取全部京东商品只要3个类就能搞定了。
什么是DynamicGecco
DynamicGec ...
ClassLoader原理分析
前文:Java中的所有类,必须被装载到jvm中才能运行,这个装载工作是由jvm中的类装载器完成的。
类装载器所做的工作实质是把类文件从硬盘读取到jvm运行内存中,或者从网络中读取到jvm运行内存中
JVM在加载类的时候,都是通过ClassLoader的loadClass()方法来加载class的。
例如:
publi
JAVA类加载机制以及如何自定义类加载器
从双亲委派说起
启动(Bootstrap)类加载器:是用本地代码实现的类装入器,它负责将 <Java_Runtime_Home>/lib下面的类库加载到内存中(比如rt.jar)。由于引导类加载器涉及到虚拟机本地实现细节,开发者无法直接获取到启动类加载器的引用,所以不允许直接通过引用进行操作。
标准扩展(Extension)类加载器:是由 Sun 的 ExtClassLoad ...
(三)类加载器
类加载器的作用是完成类加载过程中的装载步骤,即将.class文件加载到JVM
有两种类型的类加载器
1、JVM自带的类加载器
根类加载器(Bootstrap)
扩展类加载器(Extension)
系统类加载器(System)
2、用户自定义类加载器
扩展自java.lang.ClassLoader
这些类加载器以父子关系的形式存在
最顶层的类加载器,根类加载器, ...
(一)jvm内存模型概览
在JVM规范中,内存空间主要划分为堆区、栈区、方法区、本地方法栈以及PC寄存器,如下图所示
方法区:
方法区存放的是Class的信息,即类的元数据,如类的名称、修饰符、静态变量、常量、Field、Method等,当在程序中使用反射获取类的信息,如clazz.getMethod()时,就是从方法区来获取这些信息的,方法区是全局共享的,所以一个类对应的Class对象只有一个,哪怕这个类创建了 ...
关于classloader
jvm自带的三个classloader
1.Bootstrap classloader,是jvm的一部分,由C写成,调用的是核心库。
sun java下,可以用以下语句查看调用类路径
URL[] urls = sun.misc.Launcher.getBootstrapClassPath().getURLs();
写道
%JAVA_HOME%/jre/lib/re ...