关于java线程、进程的一些问题
2016-02-21 11:04
465 查看
1、多核硬件上,java中同一个进程的多个线程可以运行在不同的CPU上么?
2、android的每个App对应一个虚拟机,对应一个进程,这样不是有很多个虚拟机的拷贝,浪费了很多内存空间吗?
3、android中java 线程的本质
应该是可以的,在eclipse上面跑一个模拟程序,一个死循环的线程可以占用系统(4核,Win7)25%的CPU,4个这样的线程刚好占用100%。 这可以从侧面说明线程是可以被分配到不同的核。当然要考虑具体的系统
2、android的每个App对应一个虚拟机,对应一个进程,这样不是有很多个虚拟机的拷贝,浪费了很多内存空间吗?
不会。 原因是:1、每个App都是运行在zygote创建的进程上面 2、虚拟机也是在zygote创建的 3、所以每个App都可以共享父进程zygote的内存空间 4、并且这种共享采用COW(写时复制),即只读文件可以在父子进程间共享,不会被修改;被修改的部分在修改的时候拷贝一份。 5、所以,不仅不会浪费空间,还能节省时间
3、android中java 线程的本质
我们在java中使用Thread创建一个线程的时候,实际上它最终会通过JNI调用Native方法,在c++层中创建一个对应的线程。 具体是由pthread库中的函数pthread_create根据传入的参数,使用系统调用clone方法创建。 所以davlik虚拟机线程,实际上就是本地操作系统线程。
相关文章推荐
- LeetCode_3_LongestSubstringWithoutRepeatingCharacters(Java Code)
- 基于jpa/springData ,hibernate,mybtis的分页
- Spring MVC请求参数获取的几种方法
- JAVA多线程-线程间通信(五)-类ThreadLocal的使用
- spring与springmvc整合
- 【装载】java异常机制
- Struts2 DMI 动态方法调用
- Spring AOP配置文件
- Java 集合系列08之 List总结(LinkedList, ArrayList等使用场景和性能分析)
- java发送短信系列之限制日发送次数
- 《JAVA语言程序设计》(二)
- java发送短信系列之限制发送频率
- java中的随机数Random
- 生产消费者模式
- java发送短信系列之同步、异步发送短信
- java安全——类加载器+字节码校验+安全管理器与访问权限
- System.currentTimeMillis() :JAVA获取当前时间
- spring拦截器配置
- JavaWeb开发尝试
- Struts2 路径问题