最直接的后果,就是以后再也不会有outofmemoryerror permgen space这个错误了
|
|
50分 |
Reasons of ignoring these argument is permanent generation has been removed in HotSpot for JDK8 because of following drawbacks
Fixed size at startup – difficult to tune. Advantages of MetaSpace Take advantage of Java Language Specification property : Classes and associated metadata lifetimes match class loader’s The maximum metaspace size can be set using the -XX:MaxMetaspaceSize flag, and the default is unlimited, which means that only your system memory is the limit. The -XX:MetaspaceSize tuning flag defines the initial size of metaspace If you don’t specify this flag, the Metaspace will dynamically re-size depending of the application demand at runtime. Change enables other optimizations and features in the future Application class data sharing http://stackoverflow.com/questions/18339707/permgen-elimination-in-jdk-8/22509753#22509753 |
30分 |
只知道跟垃圾收集有关 http://openjdk.java.net/jeps/122
|
啊。 谢谢楼上各位。 我先来仔细研读研读。。
|
|
10分 |
哥们,我觉得这个最根本的好处就是在效率提升的同时增加了安全性。相对于C++来说,java语言更加安全,jvm具有自动的垃圾回收机制,而C++的程序员需要手动去清除垃圾。JVM这种设计思路确实使java语言的安全性提高了,并且不需要程序员手动去清理垃圾,但是带来了时间上的开销,也就导致了java语言效率低,速度相对慢。大部分实时系统比如股票实时显示系统智能用C或者C++来做,根本不能用java。基于jvm最初的设计,为了能在保证安全性的同时还能提高效率,最好的方式就是减少垃圾的产生,关闭String池就是从JDK7到JDK8的一个过渡,还有一些方式,总知思路就是减少产生垃圾的空间。纯属个人理解啊,紧供参考。
|
谢谢各位。 虽然还没能全明白。 至少明白个大概。。
|
|
10分 |
permSize:原来的jar包及你自己项目的class存放的内存空间,这部分空间是固定的,启动参数里面-permSize确定,如果你的jar包很多,经常会遇到permSize溢出,且每个项目都会占用自己的permGen空间
改成metaSpaces,各个项目会共享同样的class内存空间,比如两个项目都用了fast-json开源包,在mentaSpaces里面只存一份class,提高内存利用率,且更利于垃圾回收 |
哎,可以共享类信息么? 这个我仿佛没有看到有地方这样说过。 能给个连接啥的么。。 |