- 博客(10)
- 收藏
- 关注
理解GC的输出(不包括G1)
垃圾收集器很大程度上会影响应用的吞吐量和延迟。在调优之前,首先要监控,继而进行分析。那我们先看一下如何获取GC数据,并理解这些数据。 获取GC数据 可以在命令行中指定下面一种选项: -verbose:gc或-verbosegc -XX:+PrintGCDetails——获取的信息比-verbose:gc更多 如果要获取GC执行的时间,计算GC的持续时间和频率,可以在命令行中指定任...
2014-10-24 17:59:09
192
HotSpot JVM里的G1垃圾收集器
G1垃圾收集器 HotSpot JDK 7从update 4开始引入了G1垃圾收集器。 G1收集器是服务器风格的垃圾回收器,主要针对多处理器机器上占用大量内存的应用。G1能缩短暂停时间,也能提供高吞吐量。 与CMS的区别 和CMS(Concurrent Mark-Sweep)收集器相比,G1具备压缩功能,能避免碎片问题;G1的暂停时间更加可控,用户可以指定暂停时间指标。 以前的垃圾收...
2014-10-22 17:37:05
317
原创 HotSpot JVM里的垃圾收集器(Java SE 7.0之前)
内存管理的方式 内存管理有显式内存管理和隐式内存管理(交给垃圾收集器处理)两种方式。 显式内存管理会带来两个问题,一是悬空引用(一个对象仍然被其他对象引用着,但它的空间却被回收、重新分配了),另一个是空间泄漏(对象已经不再被引用了,但分配给它的内存没被释放)。 如果交给垃圾收集器来进行内存管理,垃圾收集器就需要负责: 分配内存 保证被引用的对象都存在在内存中 对象不可达时,回收它...
2014-09-01 18:37:24
235
JMS 2.0的新变化
自JMS 1.1于2002年发布以来,JMS规范今年进行了第一次更新——发布了JMS 2.0。 在JMS 2.0里,主要进行了易用性方面的提升、简化了开发(这终于追赶上EJB、JPA等Java EE里其他子规范的脚步了)。另一方面,消息处理本身也增加了一些新特性,比如多个消费者共享同一个主题订阅、延迟发送、异步发送消息、JMS提供者必须设置JMSXDeliveryCount消息属性等。 接...
2013-08-23 19:09:43
789
1
原创 构建Jetty 9
环境准备 Jetty 9的编译需要Apache Maven 3.x,以及JDK 1.7 (后面的执行步骤基于JDK 1.7.0_17和Maven 3.0.5) Maven环境搭建好之后,最好修改最大永久区的大小,否则编译过程中很可能会OOM。其中一种方式是修改Maven安装目录/bin/mvn.bat,在bat中添加: set MAVEN_OPTS=-XX:MaxPermSize...
2013-04-03 17:40:49
121
解决Red Hat Linux 6.1上的OOM: unable to create new native thread问题
在缺省配置的Red Hat Linux 6.1上运行一个大型、复杂的Java系统,如果这个Java系统会启动多个Java进程,每个进程又会有很多线程,那在运行的时候很可能会遇到java.lang.OutOfMemoryError: unable to create new native thread 遇到这个问题大家一般会想到去调整JVM的内存设置,但实际上这极可能是Linux本身的ul...
2013-02-27 21:45:18
223
原创 浅析Tomcat防止文件被锁的方式
在Windows平台的Tomcat上部署应用后,应用下的个别文件可能会被Tomcat锁住,解部署的时候删除不掉那些内容,就会导致无法重部署。如果解部署删除不掉被锁的文件,Tomcat会在日志中警告说: 2013-1-9 15:44:09 org.apache.catalina.startup.ExpandWar delete严重: [D:\tomcat\apache-tomcat-7.0.3...
2013-01-21 20:37:09
721
用JSR-88往Java EE应用服务器上部署应用
概述 每种Java EE应用服务器都为应用部署提供了多种方式,常用的有命令行、Web控制台、自动部署等。除了这些,用户还可以利用JSR-88 往Java EE应用服务器上部署应用。 JSR-88是Java EE Deployment API,定义了往Java EE应用服务器上部署应用的统一模型和API。利用JSR-88的部署工具可以采用统一的方式往不同的Java EE应用服务器上部署应...
2012-12-09 18:25:50
225
用Ant强杀Java进程
强杀进程的方式有很多。如果应用程序需要在多个平台下运行,我们可以为不同的平台编写不同的脚本,然后在整体构建/运行的脚本里去分别调用,但这并不太利于维护。我们可以借助Ant、采用统一的方式去完成这件事情。 以强杀Java进程为例,主要思路: 使用Java自带的jps命令得到所有Java进程的信息 获得符合要求的Java进程的PID 调用强杀进程的命令杀死进程 Ant脚本片段: ...
2012-11-14 21:07:48
178
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人