问一个问题:Java的类加载是在运行时加载的,所以批量执行的时候第一次执行很慢(因为要加载类),有没有什么办法在初始化之前就把所有的类加载完?
8 个解决方案
#1
类静态化,在加载前,完成初始化
#2
static。。。不建议把有类都弄成静态
#3
有没有需要在一开始的时候全部初始化??可以在用到时再初始化啦
#4
用的是第三方的jar包,它内部的类没办法静态化怎么办?
#5
Spring
#6
1.有点不理解楼主的需求,java项目第一次运行慢的原因确实如楼主所说需要进行编译及类加载,但是这是jvm所必须的,本来初始化的时候jvm就是按需进行类加载的,你程序里没有引用的类他是不会加载的。
2.如楼上所说,就算你定义成static的,但是static是静态的代码块,它也是初始化的一部分,只不过是一开始就加载罢了,这也没法提高程序第一次运行的速度,而且你都设置成静态的,这就要求所有对象共享这些静态域,你还要考虑并发,一个项目里面怎么可能实现呢?
3.所以总结下,楼主的这种操心多虑了,jvm虚拟机就已经优化过了。
2.如楼上所说,就算你定义成static的,但是static是静态的代码块,它也是初始化的一部分,只不过是一开始就加载罢了,这也没法提高程序第一次运行的速度,而且你都设置成静态的,这就要求所有对象共享这些静态域,你还要考虑并发,一个项目里面怎么可能实现呢?
3.所以总结下,楼主的这种操心多虑了,jvm虚拟机就已经优化过了。
#7
感谢。说的很详细
#8
要么自己写个托管容器,要么找Spring,托管整个bean生命周期。
#1
类静态化,在加载前,完成初始化
#2
static。。。不建议把有类都弄成静态
#3
有没有需要在一开始的时候全部初始化??可以在用到时再初始化啦
#4
用的是第三方的jar包,它内部的类没办法静态化怎么办?
#5
Spring
#6
1.有点不理解楼主的需求,java项目第一次运行慢的原因确实如楼主所说需要进行编译及类加载,但是这是jvm所必须的,本来初始化的时候jvm就是按需进行类加载的,你程序里没有引用的类他是不会加载的。
2.如楼上所说,就算你定义成static的,但是static是静态的代码块,它也是初始化的一部分,只不过是一开始就加载罢了,这也没法提高程序第一次运行的速度,而且你都设置成静态的,这就要求所有对象共享这些静态域,你还要考虑并发,一个项目里面怎么可能实现呢?
3.所以总结下,楼主的这种操心多虑了,jvm虚拟机就已经优化过了。
2.如楼上所说,就算你定义成static的,但是static是静态的代码块,它也是初始化的一部分,只不过是一开始就加载罢了,这也没法提高程序第一次运行的速度,而且你都设置成静态的,这就要求所有对象共享这些静态域,你还要考虑并发,一个项目里面怎么可能实现呢?
3.所以总结下,楼主的这种操心多虑了,jvm虚拟机就已经优化过了。
#7
感谢。说的很详细
#8
要么自己写个托管容器,要么找Spring,托管整个bean生命周期。