JVM和OS内存数据交互

  • JVM启动申请多大的内存;
  1. java 启动的时候会按照配置参数分配一定的内存空间,通过OS预先分配的内存空间大小是-Xms的大小,而不会是-Xmx的大小,许多空间也只有是在真正
    使用的时候才分配的;当创建对象的时候,内存的分配是有JVM和OS交互完成的;
  • 数据为什么经过多次的拷贝才能到IO?
  1. 当向OS申请到一定内存之后,OS就不在管理了,因为对于OS来说这些内存空间已经给JVM了,她并不知道什么时候来释放这些各个对象的内存空间,这些只有JVM自己知道,因此,JVM的对象都是有JVM来管理的;
  2. 当有一些数据需要传递的时候,此时数据只是再JVM里面,需要把这些数据输出到某个IO设备,必须要靠OS和网络,因为,只有OS才能控制各个设备读写。因为内存会分配“系统区”和“用户区”,系统区就是存放操作系统程序的,他管理各种线程、进程、管理各类设备的状态,调度等功能;因此,理论上说只要是用户程序进程,如果需要往IO交互数据,都需要把用户区的数据拷贝的内核去操作系统的进程里面,然后让OS与IO数据交互;
    在某些场景下,可以减少IO数据拷贝,例如java的DirectBuffer对象,就是直接内存数复制,可以查阅关于此对象的相关资料
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值