高性能硬件上的程序部署策
三大块非用户程序时间:
- 编译时间
- 垃圾收集时间
- GC时间
- 新生代minor GC
- 老年代Full GC
编译时间是指虚拟机的JIT编译器编译热点代码的耗时。Java的运行时编译最大的缺点就是它进行编译需要消耗程序正常的运行时间。
Coding My Life
给定一个系统定位问题的时候,只是、经验是关键基础,数据时依据,工具是运用知识处理数据的手段。这里说的数据包括:运行日志、异常对战、GC日志、线程快照(threaddump/jvacore文件)、堆转存储快照(headdump/hprof文件)等。
JDK的命令行工具
解决liunx下jstat无法查看虚拟机状态的问题:连接。
启动后,这时候使用jstat查看该tomcat的状态提示pid not found,使用jps也没有这条信息,但是ps查看明明就有,顿时感觉很坑爹.
一顿查找资料后,逐步解决.
首先java进程会向/tmp里写文件,路径为hsperfdata$user/$pid,如果在tmp下没有这个文件jps就会查找不到这个线程.如果tmp下的java临时文件有误就会提示xx – process information unavailable,这时候把tmp下hsperfdata这样的都删了,然后重启java程序,再使用jps就能正常输出结果了.
然后tomcat的catalina.sh里开头设置CATALINA_TMPDIR=/tmp,这样下面的脚本执行-Djava.io.tmpdir=\”$CATALINA_TMPDIR\” \,这样就可以达到效果是加上java参数-Djava.io.tmpdir=/tmp.
这时候重启tomcat后,输入jstat -gcutil pid,就可以显示jvm的情况了
与计数器一样,虚拟机栈也是线程私有的,生命周期与线程相同。
描述的是Java方法执行的内存模型
栈帧是方法运行时的基础数据结构。
Java虚拟机规范对这个区域规定了两种异常情况:如果线程请求的栈深度大于虚拟机所允许的深度,将抛出StackOverflowError异常;如果虚拟机栈可以动态扩展,扩展时无法申请到足够的内存,就会抛出OutOfMemoryError异常。
为虚拟机使用到的Native方法服务。
本地方法栈也会抛出StackOverflowError和OutOfMemory异常。
与虚拟机栈的作用相似。
首先要纪念一下,这是我第一次写博客,这也是我的第一篇博文。我希望以后几年,十几年,几十年都能够坚持写下去,与大家分享生活与工作中一切好的东西!
我一直都想把工作和生活中的点点滴滴以博文的方式跟大家分享,但是一直都没有付诸行动(其实就是懒),直到前段时间跟同一年以应届生身份进公司的同事聊天时才知道他一直在坚持写博客,他向我推荐了他的博客,还告诉我怎么去搭建博客站点(这里要感谢github),这才完全激起了我的兴趣。当然我不希望自己只有三分钟热度,我希望自己能够一直写下去。
当然,不只是一时兴起,我打算写博客还基于几个原因:
加油吧,少年!(嘿嘿)