码迷,mamicode.com
首页 > 编程语言 > 详细

《深入理解Java虚拟机:JVM高级特性与最佳实践》学习笔记 Ⅱ

时间:2015-03-04 14:35:16      阅读:187      评论:0      收藏:0      [点我收藏+]

标签:

第4章 虚拟机性能监控与故障处理工具
//学习了虚拟机内存分配与回收技术的理论,还要掌握如何在实际工作中应用。
//介绍了随JDK发布的6个命令行工具和2个可视化的故障处理工具。
1.JDK的命令行工具
JDK的bin目录下有许多工具,可以用于监视虚拟机和故障处理。
很多小工具的命名都类似Unix命令,比如jps,功能和Linux的ps相似。
常用的JDK命令行工具:
jps:
jstat:虚拟机统计信息监视工具
jinfo:
jmap:
jhat:
jstack:
2.JDK的可视化工具
JConsole:Java监视与管理控制台
VisualIVM:多合一故障处理工具

第5章 调优案例分析与实战
//分享几个比较有代表性的实际案例。
1.高性能硬件上的程序部署策略
在高性能硬件上部署程序,主要有两种方式:
通过64位JDK来使用大内存;
使用若干个32位虚拟机建立;逻辑集群来利用硬件资源。

对于用户交互性强,对停顿时间敏感的系统,给虚拟机分配超大堆的前提是有把握把应用程序的Full GC频率控制得足够低,不能影响用户使用。
控制Full GC频率的关键是看应用中绝大多数对象能否符合"朝生夕灭"的原则,即大多数对象的生存时间不应当太长,尤其是不能产生成批量的、长生存时间的大对象,这样才能保障老年代空间的稳定。

在使用64位JDK管理内存时,还需要考虑下面可能面临的问题:
内存回收导致的长时间停顿;
性能可能普遍较低;
因为指针膨胀及数据类型对齐补白等因素,相同的程序在64位JDK中消耗的内存一般比32位JDK大。

2.集群间同步导致的内存溢出

3.堆外内存导致的溢出错误
//大量使用NIO操作会占用很多堆外内存。
下面是一些实践经验,除了Java堆和永久代之外的内存:
Direct Memory:可通过-XX:MaxDirectMemorySize 调整大小,内存不足时抛出OutOfMemoryError
或者OutOfMemoryError:Direct buffer memory。
线程堆栈:可通过-Xss调整大小,内存不足时抛出StackOverflowError(纵向无法分配,即无法分配新的栈帧)
Socket缓存区:每个Socket连接都Receive和Send两个缓存区,分别占大约37KB和25KB的内存。
JNI代码:
虚拟机和GC:

4.外部命令导致系统缓慢

5.服务器JVM进程崩溃

6.实战:Eclipse运行速度调优

 

《深入理解Java虚拟机:JVM高级特性与最佳实践》学习笔记 Ⅱ

标签:

原文地址:http://www.cnblogs.com/binyue/p/4311406.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!