redcap0
发表于 2013-07-31 14:04
回复 20# simpleman7210
http://hllvm.group.iteye.com/ 这有些不错入门资料,而且有几个jvm的简单实现.
simpleman7210
发表于 2013-07-31 14:59
http://hllvm.group.iteye.com/ 这有些不错入门资料,而且有几个jvm的简单实现.
这里面确实很多,我曾在里面找过,似乎也不好找到便于初学者上手的jvm实现。SUN的kvm算是简单的吗?我发现也不是很容易读懂其代码,我只能拿来作为参考资料。也许有我没有留意到的简单jvm实现,请指出。
gvim
发表于 2013-08-03 15:29
(1)Java虚拟机编程中您的一些小经验
没什么特别的技巧,经验,个人本来是做系统级程序的,所以看java虚拟机里面很多机制,其实和实体机器体系和操作系统没什么特别本质的区别,比如并发,模块,classload这些,java实现的机制不同,只要了解elf,so之类操作系统加载文件的过程,classload也有大部分是可以类比学习的。
我眼里java就是一个cpu+os,类比起来可能就是intel+unix,所以深入学习java虚拟机的一个普通的可以和大家交流的经验就是学好体系结构和操作系统原理:mrgreen:
(2)Java虚拟机技术的未来走向
20年前的系统是单核单系统,10年前的系统是多核网络系统,现在更多的是多核群集分布式网络系统,所以java虚拟机一问世便解决了单系统的系统抽象问题,然后虚拟机提供了并发并行能力,按照系统的发展方向和规律,我猜虚拟机某天可以天然的原生支持分布式和集群应用,不是通过类库这些东西做扩展,就如erlang虚拟机的支持一般天然。
jimmy-_-lixw
发表于 2013-08-06 16:18
本帖最后由 jimmy-_-lixw 于 2014-04-06 21:27 编辑
提示: 内容被隐藏或删除 内容自动屏蔽
redcap0
发表于 2013-08-07 09:20
回复 24# jimmy-_-lixw
二维数组,二维数据占用的内存空间比一维数组多得多,大概几倍以上。
尽可能将经常使用的对象进行缓存,可以使用数组,或HashMap的容器来进行缓存,但这种方式可能导致系统占用过多的缓存,性能下降。
使用单例可以减轻加载的负担,缩短加载的时间,提高加载的效率,但并不是所有地方都适用于单例,简单来说尽量在合适的场合使用单例
~上面所说的这些,都是设计上的原因,根java虚拟机没关系吧..而且内存占用大总得有个限度吧,一般调整heap大小基本都能应付,应付不了的都走集中缓存.
rover12421
发表于 2013-08-07 10:19
回复 24# jimmy-_-lixw
缓存本身就用用来提高性能,提升相应速度的。如果因缓存带来性能损耗,那可定是设计有问题。缓存都应该搭配缓冲池使用,如果一味的缓存下去,那必然导致你所说的系统资源吃紧,性能降低
jimmy-_-lixw
发表于 2013-08-07 18:20
本帖最后由 jimmy-_-lixw 于 2014-04-06 21:26 编辑
提示: 内容被隐藏或删除 内容自动屏蔽
mcyeah
发表于 2013-08-10 00:27
本帖最后由 mcyeah 于 2013-08-10 11:32 编辑
(1)Java虚拟机编程中您的一些小经验
我觉得其实Java虚拟机编程主要应该指的是利用JVM平台来进行程序设计,现在JVM所支持的语言也已经有很多了。但是此处所指的Java虚拟机编程经验可以类比于不用虚拟机的情况下针对特定CPU体系结构的编程经验,所以对于虚拟机的深入理解就很有必要了,我觉得这就像是要对cpu的体系结构(不是直接针对硬件的编程就是操作系统)、汇编进行深入理解一样。当我们能够了解了虚拟机的工作之后,我们编写代码时可以有以下几个方面的改进:
调试程序,寻找bug又多了一种手段,我们可以通过对java字节码的反汇编来对自己程序产生的bug进行精确定位;
了解了虚拟机的工作原理,我们就会对语言的一些特性有深入的理解,从而减少bug产生的几率;
可以编写针对虚拟机的原理做专门优化的代码,提高程序效率;
能够更好的对虚拟机进行特殊配置和二次开发,来满足特定的需求。
(2)Java虚拟机技术的未来走向,会有哪些新特性
我觉得Java虚拟机技术的发展方向应该有效率和广度两个方面。由于是虚拟机,所以各种能够提升效率的方法肯定会被加到java虚拟机的特性中,比如早期没有JIT这个特性,现在有了。广度应该包含多平台(各种不同的体系结构,以及多核环境)支持、多语言(各种动态语言、静态语言)支持、扩展功能(模块儿化,图形化方面的发展等)。