java的几个基础问题
来源:互联网 发布:java base64的jar包 编辑:程序博客网 时间:2024/05/17 04:08
1、java系统出现OOM,应该如何处理。
首先,要搞清OOM的分类:
OMM主要三类: permgen OOM , heap OOM, stack overflow
1)permgen OOM:
这个主要是由于加载的类太多,或者反射的类太多, 还有 调用 String.intend(jdk7之前)也会造成这个问题。
所以出现了这个问题,就检查这三个方面;
2)heap OOM:
把内存大户找出来。可通过命令定期抓取heap dump 或者 启动参数OOM时 自动抓取heap dump。
通过对比多个heap dump,以及heap dump的内容,找出内存大户。
分析占用的内存对象,是否是因为错误导致的内存未及时释放,或者 数据过多导致的内存溢出。
根据原因,fix bug 或者 修改方案,主要是因为一些无用对象没有及时释放造成的,检查代码加上 heap dump 去分析吧
3)stack overflow:
这个主要是由于调用层数,或者递归深度太大造成的,看异常信息,基本上就能定位得出来了
2、如何实现微信“附近的人”功能?
初期实现:客户端固定时间发送经纬度(x,y)到服务器s,服务器存储每个登陆的用户的经纬度到表t中,
表t按照经纬度分表,将地图分成一个个的小格子。当用户店家“附近的人”时,对用户(x,y)进行计算,
最多一次查询其中的4个格子(子表),计算两点间距离获取结果(有点像桶排序)。
性能上可以将表t替换为内存结构,容灾即可。
从实际的微信提供的功能来看,附近的人并不太多,估计是其对地图划分的格子很小。
3、DNS进行域名解析的过程。
首先,客户端发出DNS请求翻译IP地址或主机名。DNS服务器在收到客户机的请求后:
(1)检查DNS服务器的缓存,若查到请求的地址或名字,即向客户机发出应答信息;
(2)若没有查到,则在数据库中查找,若查到请求的地址或名字,即向客户机发出应答信息;
(3)若没有查到,则将请求发给根域DNS服务器,并依序从根域查找顶级域,由顶级查找二级域,
二级域查找三级,直至找到要解析的地址或名字,即向客户机所在网络的DNS服务器发出应答信息,
DNS服务器收到应答后现在缓存中存储,然后,将解析结果发给客户机。
(4)若没有找到,则返回错误信息。
4、什么是符号链接,什么是硬链接?符号链接与硬链接的区别是什么?
链接分硬链接和符号链接。
符号链接可以建立对于文件和目录的链接。符号链接可以跨文件系统,即可以跨磁盘分区。
符号链接的文件类型位是l,链接文件具有新的i节点。
硬链接不可以跨文件系统。它只能建立对文件的链接,硬链接的文件类型位是-,
且硬链接文件的i节点同被链接文件的i节点相同。
5、如何减少上下文切换?
- 上下文切换又分为2种:让步式上下文切换和抢占式上下文切换。
- 前者是指执行线程主动释放CPU,与锁竞争严重程度成正比,可通过减少锁竞争来避免;
- 后者是指线程因分配的时间片用尽而被迫放弃CPU或者被其他优先级更高的线程所抢占,一般由于线程数大于CPU可用核心数引起,可通过调整线程数,适当减少线程数来避免。
- java的几个基础问题
- Java几个基础问题
- Java 几个基础问题
- java中几个常见的基础问题
- Java初学者需要了解的几个基础问题
- weblogic的几个基础问题
- weblogic的几个基础问题
- weblogic的几个基础问题
- weblogic的几个基础问题
- weblogic的几个基础问题
- Java的几个基本问题
- 几个老的JAVA问题
- 几个有趣的java问题
- weblogic的几个基础问题 (转)
- 聊天中提到的几个基础问题
- weblogic的几个基础问题(转)
- 几个基础java的问题!~(仔细看哦 有陷阱的!!!勿陷)
- java中常用的几个基础概念
- HDU1754 I Hate It 线段树区间最值
- 产品经理让你开发一个模块(功能),我们如何做才能降低在交付前的修改量呢
- MFC下如何获取本机IP和mac地址?
- OSI七层模型和TCP/IP四层模型
- Head_First_Python学习笔记(二)
- java的几个基础问题
- OpenGL入门学习
- linux 头文件以及库的路径
- contact list app in android
- 虚拟现实到底为什么还没有做好成为营销平台的准备
- openssl rsa密钥格式的问题,解决了php和c++协同开发的密钥格式问题
- 在Android Studio 上安装Genymotion插件
- 模糊C均值聚类
- xcode插件