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