1.7中存在永久代,1.8中没有永久代,代替它的是元空间,元空间所占的内存不是在虚拟机内部,而是本地内存空间,这么做的原因是,不管是永久代还是元空间,他们都是方法区的具体实现,之所以元空间所占的内存改成本地内存,官方的说法是为了和JRockit同意,不过额外还有一些原因,比如方法区所储存的类信息通常是比较难确定的,所以对于方法区的大小是比较难指定的,太小了容易出现方法区溢出,太大了又会占用了太多虚拟机的内存空间,而转移到本地内存后则不会影响虚拟机所占用的内存。
JDK1.7到JDK1.8 Java虚拟机发生了什么变化?
最新推荐文章于 2023-06-04 14:47:14 发布