JVM(四)

对象的访问定位:

建立对象是为了能够是使用对象;通过栈上的reference数据来操作堆上的具体的对象。然而Reference类型在虚拟机的规范只是指定了一个对象的引用,具体如何去访问,就的需要取决于虚拟机。主要的俩中方式:句柄和直接指针俩种。

句柄式访问:JAVA堆中会划分出一个句柄池,Reference存储的是句柄地址。句柄中包含了对象实例数据与类型数据各自的具体的地址信息。

   好处:Reference中存储的是稳定的句柄地址,在对象被移动后,只会改变句柄中的实例数据指针。Reference本身布需要修改。

直接访问:Reference存储的直接就是对象地址。好处:访问的速度极快,节约了一次指针定位的时间开销。

-Xms ,Xmx:最小值参数,最大值参数设置避免堆自动扩展

-XX:+HeapDumpOnOutOfMemeoryError:配置参数可以让虚拟机在出现内存溢出异常的时候Dump出当前的内存堆转存储快照以便事后进行分析。

-Xss:设置栈容量

-XX:PermSize -XX:MaxPermSize:可以限制方法区的大小,从而间接的限制常量池的容量大小。

DirectMemory容量可以用:-XX:MaxDirectMemorySize设定

回顾JAVA虚拟机的分区:

运行时数据区:

程序计数器:

JAVA虚拟机栈:各种基本数据类型,对象引用和returnAddress类型

本地方法栈:作用和JAVA虚拟机栈一样,主要区别:虚拟机栈实行JAVA方法(字节码)服务,然而本地方法栈使用到的Native方法服务

(有的虚拟机合并了虚拟机栈和本地方法栈)

JAVA堆:垃圾收集器主要管理的区域,用于存放对象实例。

方法区:线程共享的内存区域,存储已被虚拟机加载的类信息、常量、静态变量,即时编译器编译后的代码等数据。

运行时常量池:是方法区的一部分,用于存放编译期生成的各种自面量和符号引用

直接内存:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值