java堆的大小包括加上方法区(持久代)的大小吗

先说结论:在jdk1.6,Hotspot中,方法区大小是不包括进java堆的大小中的。

《深入理解Java虚拟机第二版 周志明著》第41页提及到:“方法区与Java堆一样,是各个线程共享的内存区域。它用于存储已被虚拟机加载的类信息,常量,静态变量,即时编译器编译后的代码等数据。虽然java虚拟机规范把方法区描述为堆的一个逻辑部分,但是它却有一个别名叫做非堆,目的应该是与Java堆区分开来的。”

jvm配置参数如下:

-Xmx16m -Xms16m -Xmn5m -XX:PermSize=16m
-XX:+PrintGCDetails

java测试代码如下:

public static void main(String[] args) {
     System.out.println(Runtime.getRuntime().totalMemory() / 1000000);
     System.out.println(Runtime.getRuntime().freeMemory() / 1000000);
     System.out.println(Runtime.getRuntime().maxMemory() / 1000000);


控制台输出如下:

所以说百度搜索第一位http://unixboy.iteye.com/blog/174173/ 整个JVM内存大小=年轻代大小 + 年老代大小 + 持久代大小

是错的,至少在hotspot1.6中不成立,整个JVM内存大小=Xmx=年轻代大小 + 年老代大小。持久代要另外算。


  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值