4.4JVM 调优工具
Jconsole,JProfile,VisualVM
Jconsole:jdk自带,功能简单,订单式可以在系统有一定负荷的情况下使用。对垃圾回收算法有很详细的跟踪;
JProfiler:商业软件,需要付费,功能强大;
VisualVM:jdk自带,功能强大,与JProfiler类似。推荐。
4.5 如何调优
线程池:解决用户响应时间长的问题
连接池
JVM启动参数:调整各代的内存比例和垃圾回收算法,提高吞吐量程序算法:改进程序裸机算法提高性能
4.6内存泄露检查
内存泄露:对系统资源(堆、栈、线程等)危害比较大,因为他可以直接导致系统的崩溃
年老代堆空间被占满
异常: java.lang.OutOfMemoryError: Java heap space
解决:这种方式解决起来也比较容易,一般就是根据垃圾回收前后情况对 比,同时根据对象引用情况(常见的集合对象引用)分析,基本都可以找到泄漏点
持久代被占满
异常:java.lang.OutOfMemoryError: PermGen space
解决:
- -XX:MaxPermSize=16m
- 换用 JDK。比如 JRocket
堆栈溢出
异常:java.lang.StackOverflowError 说明:这个就不多说了,一般就是递归没返回,或者循环调用造成
线程堆栈满
异常:Fatal: Stack size too small
解决:增加线程栈大小。-Xss2m。但这个配置无法解决根本问题,还要看代 码部分是否有造成泄漏的部分。
系统内存被占满
异常:java.lang.OutOfMemoryError: unable to create new native thread
解决: - 重新设计系统减少线程数量。
- 线程数量不能减少的情况下,通过-Xss 减小单个线程大小。以便能生产 更多的线程。
二.Java Web
1.JDBC 技术
1.1 说一下原生jdbc 操作数据库流程
第一步:Class.forName()加载数据库连接驱动
第二步:DriverManager.getConnection()获取数据连接对象
第三步:根据SQL获取sql会话对象,有2种方式Statement,PreparedStatement;
第四步:执行SQL处理结果集,执行SQL前如果有参数值就设置参数值setXXX();
第五步:关闭结果集、关闭会话、关闭连接
1.2说说事务的概念,在JDBC编程中处理事务的步骤
事务特性:原子性、一致性、隔离性、持久性(ACID)属性
事务处理步骤:
Conn.setAutoComit(false);设置提交方式为手工提交
Conn.commit()提交事务
Conn.rollback();出现异常,回滚;
1.3 JDBC的脏读是什么?那种数据库隔离级别能防止脏读
transactionreadcommitted,transactionreperatableread
和transaction_serializable隔离级别可以防止脏读
2.网路通讯部分
2.1TCP与UDP区别
聊天、网络视频会议、桌面共享用的就是UDP
UDP这里写自定义目录标题