//--------update 2015-04-16
在一个tomcat下,用classloader加载了某个类之后会将该类信息放入方法区(永久代)。当这个类创建了某个线程,比如周期显示当前时间,那么会导致这个类信息一直存在于永久区中,即使这个类的主要工作已经完成了,但是没有把这个附加启动的线程给结束掉。因此,如果这个类被tomcat启动多次,就会导致oom,把这个tomcat的永久区给占满了。这也就是永久区的内存泄露。
tomcat和多个web application的关系。
tomcat是一个进程,也就是一个jvm,web app是资源文件。不同webapp对应不同的监听端口。因此一个tomcat通过接受不同监听端口来加载不同的资源。
所有的这些资源都是加载到永久区中。所以会导致永久区的内存泄露。
//--------------------
早上九点多接到杭州的电话,阿里三面来了。
首先还是介绍下Citygo,大概了解了一下项目的背景。
失败地方之一,我介绍这个比赛的背景废话太多,什么清华北大之类的,不应该说这些,而应该突出自己短时间高质量完成。
问了如何存储游记,目前仍然是直接存储,没什么特别的地方。
问了在数据量大的时候如何判断周围有哪些游记,回答按照行政区来划分,(在西安,按照行政区来划分还是可行的,面试官说对杭州来说不可行,而是应该按照地图的原理,按照经纬度把地图划成一块一块,1.我又没去过杭州,2.划成一块一块跟按照行政区感觉核心思想都是一样的,就是分类。)
问了项目中碰到什么困难,这个问题在前面两面都遇到过,自己应该针对这个问题好好总结下。
问了熟悉编程语言,c++与Java的内存管理,常见的数据结构,进程通信。
这边自己感觉失败地方之二,我总体说了一下而没有细说下去,面试官也就不接问(我在等他针对这些点提问),是不是给他一种我只知道大概的这种感觉。
以后应该对每个点都细说下去而不是等面试官提问。
Java是否存在内存泄漏的问题,回答不会,错!
问了hashmap hashtable的区别和具体实现,回答是线程安全与不安全,具体实现自己猜测是根据操作系统里面的互斥来维持的,没碰到过,接下来要好好抓着一块。
整体总结,准备仍然不足。需要有针对性的准备,回答技巧也要提高。