1、jdk 6可以管理到多少线程?A 100左右 B 1000左右 C 10000 左右 。如果一个应用需要使用大量的内存,您有两种方式,第一,使用64位系统,让JDk寻址到4G以上内存;第二,软件采用分布式,使用多个JVM。请分析两种方式的利弊
2. JDK 1.6 的新特性,您使用过哪些,你觉得哪些特性在您负责的哪些项目中是起到关键作用的?

解决方案 »

  1.   

    当然这些都是Java的基本题,那些面试的人大多数不会问你Hibernate有多先进,Eclipse的三个组成部分,或command design pattern,他们老一辈的,最喜欢问的就是基础知识。别小看了这些基础,还是要小心,要不然会与高薪无缘。
      

  2.   

    第一我选C。
    第二,实用64位操作系统性能要好很多,但是需要64位硬件支持。使用多个JVM,就是垂直集群了,垂直集群具有集群的各种优点,再加个前端web服务器可以实现均衡负载,硬件上,普通机器单机就可以实现。
      

  3.   

    JDK1.6么~就使用过TrayIcon……另外我觉得问题1的话,用多个JVM可能因为寻址问题,性能上跟不上直接使用64位,但是这种做法能应用的地方更多一些
      

  4.   

    1 jvm可以管理的线程应该是比较多的,但是还是要取决于实现。这里我选c,创建大量的线程导致的频繁切换反而降低性能,
      所以应用中还是应该有个上界。
      

  5.   

    是够难的!!第一题:我也不知道:
    但是做一个推测---编译系统heap size基本最大就1M,每个线程都用自己的堆栈,一般32-XP等操作系统寻址是2G,
    那也就2000线程上下呀!
    64位VISTA系统主板也就烧到支持64G内存---寻址肯定大于64G, 按照64G计算,那会有60000上下。
    所以64位JDK可能会在一万上下,32位JDK估计也就一千上下。
    ------------------------------------------------------------------------------------------------------------
    我这是推测,没有经过证实。
    ----------------------------------
    第二题:我会选择64位JDK,这个成本小。如果采用分布式,成本基本会在原有基础上呈模块数成本的幂次递升。
    但是分布式还是根本解决方法。-------------------------------------------------------------------------------------------------------------
    新特性我一个也没用到。但是Derby感觉对我很重要,这是完成插拔框架的基础。也许那一天我会把struts以数据库的形式提供大家使用。反正吹牛也不上税!
      

  6.   


    其实第一个题的答案已经在题里透露出来了,只是你没有用心去找。先分析一下题:1、jdk 6可以管理到多少线程?A 100左右 B 1000左右 C 10000 左右 。如果一个应用需要使用大量的内存,您有两种方式,第一,使用64位系统,让JDk寻址到4G以上内存;第二,软件采用分布式,使用多个JVM。请分析两种方式的利弊 红色部分:可以放JDK增加到4G的内存,一个线程在内存中占用大约1M,那么他说的4G也就是4000个线程的空间,在win32的系统中,JDK最大只能到2G,那么就是2000个线程的空间,抛出去其他资源耗内存的空间,那么能支持的线程数也就是在 1000左右,那么答案就是B但是这样的推算不能绝对,因为也要看服务器的硬件配置。所以你可以回答在win32单cpu下能管理到1000左右线程。剩下的问题是大量使用内存的应用,在程序开发中,不能把所有可能遇到的问题都推到硬件上去解决,所以最好选择第二种方案,利用分布式,其实很多大型应用就是利用分布式,在程序无法再提高性能的情况下,才选择增加硬件配置。2. JDK 1.6 的新特性,您使用过哪些,你觉得哪些特性在您负责的哪些项目中是起到关键作用的? 其实这个题是一个活动题,也不见得他问的有多高明,我觉得JDK升级到6.0后最好的就是他对GC的改良。这个问题没什么大的意义,属于垃圾题,因为面试的人可能一直都在用5.0. 虽然我是在用6.0,但是你不能确定面试的人都在用6.0做开发,所以你不知道面试的人有没有在项目中用到6.0.
      

  7.   

    哎,,,我最近想了解一下JDK1.5 ,JDK1.6有啥区别???
      

  8.   

    因为工作的原因,目前只用到了JDK5的新特性,而未用1。6的。
    至于线程管理。
    以我的开发经验,一个大的系统,也不可能使用超过200个线程的情况。
    所以,1K和10K这种情况,几乎不可能出现。
    如果楼主的程序中,非要那么多的线程才能解决问题的话,不妨找到问题的瓶颈在何处,更改先有算法以解决问题。
    其次是内存的问题。
    内存爆掉的问题,一般会是由数据库操作而引起的,这种情况下,可以通过释放缓存、将数据分批查询处理等方法来解决。
    程序启动后,所加载的信息,一般是不会超过800M的,留下200M左右的空间,作为程序处理数据的缓存空间,一般情况下是能够解决问题的。
    就看楼主有没有实力将程序的数据缓存空间控制在200M左右或以内的范围内。
    当然,在面向对象的编程理念中,线程处理所涉及到得对象,某种意义上,也可以称为缓存。
      

  9.   

    晕,用了这么久JDK1.6我还真不知道答案呢,等待高手解决!
      

  10.   

    对于这个问题还真真没深究过,平时在使用的时候也没关心这个东西,能用就行,我在EditPlus配置的是1.5,可我也没看出到底用了多少呀.
    对于26楼的回答,算是学习了,几乎属于文盲系列,呵呵......
      

  11.   

    根据这篇文档, 线程的栈空间默认大小为256kb(on Intel for 1.3 and 1.4 32-bit VMs), 假设JVM的地址空间为4gb, 两者相除, 一个JVM最多能容纳的线程约为16000。当然考虑到其它因素, 例如堆也要消耗地址空间, 栈空间大小可设置(最小64kb)等等, 这不是一个确切的数字. 但数量级在10000应该是没问题的。在google上能够搜到的一些线程数接近10000的案例案例.
      

  12.   

    呵呵,线程数量跟内存没关系,它消耗的是cpu时间,内存消耗只是取决于你线程里面消耗的内存大小,1000与10000都有可能,就看你的cpu性能了。1000以上的我都遇到过,就是普通的pc服务器。我相信大多数的java开发人员不会用到这么多的线程了。至于分布式和64区别:分布式优点就是性能上的提升,条件允许的话可以弄N多个,也可以将系统中的应用单独分离(ejb,wtc,webservice等等),缺点就是维护麻烦,成本高(这点要考虑客户的感受了),64的呢,大体上相反,关键要看你系统是不是会达到内存峰值。1。6特性,你可以直接回答没用过 ,因为常规java 开发你根本用不到新特性。比如监控,derby,scripting等。你说你用了些什么,可能你用了你也不知道。