- 浏览: 33902 次
- 性别:
- 来自: 北京
最新评论
-
lijiawei_88:
感谢
浅析Tomcat防止文件被锁的方式 -
bo_hai:
总结的真好!
HotSpot JVM里的G1垃圾收集器 -
yelx:
很实用啊
浅析Tomcat防止文件被锁的方式 -
nuo9021:
王女士,您好:我是一名24岁的互联网创业者。有一些疑惑想向前辈 ...
理解GC的输出(不包括G1) -
wwwcomy:
不错 慢慢看~
JMS 2.0的新变化
文章列表
垃圾收集器很大程度上会影响应用的吞吐量和延迟。在调优之前,首先要监控,继而进行分析。那我们先看一下如何获取GC数据,并理解这些数据。
获取GC数据
可以在命令行中指定下面一种选项:
-verbose:gc或-verbosegc
-XX:+Print ...
G1垃圾收集器
HotSpot JDK 7从update 4开始引入了G1垃圾收集器。
G1收集器是服务器风格的垃圾回收器,主要针对多处理器机器上占用大量内存的应用。G1能缩短暂停时间,也能提供高吞吐量。
与CMS的区别
和CMS(Concurrent Mark-Sweep)收集器相比,G1具备压缩功能,能避免碎片问题;G1的暂停时间更加可控,用户可以指定暂停时间指标。
以前的垃圾收集器(顺序、并行、CMS)都把堆分为三个部分:年轻代、老年代、永久代,三个部分的大小都是固定的。而在G1里,堆被分为若干区域,每个区域里的内存是连续的。区域会有“角色”,但某个“角色”的大小并不固定,这 ...
内存管理的方式
内存管理有显式内存管理和隐式内存管理(交给垃圾收集器处理)两种方式。
显式内存管理会带来两个问题,一是悬空引用(一个对象仍然被其他对象引用着,但它的空间却被回收、重新分配了),另一个是 ...
自JMS 1.1于2002年发布以来,JMS规范今年进行了第一次更新——发布了JMS 2.0。
在JMS 2.0里,主要进行了易用性方面的提升、简化了开发(这终于追赶上EJB、JPA等Java EE里其他子规范的脚步了)。另一方面,消息处理本身也增加了一些新特性,比如多个消费者共享同一个主题订阅、延迟发送、异步发送消息、JMS提供者必须设置JMSXDeliveryCount消息属性等。
接下来看看具体的变化和内容。
简化的API
JMS 2.0里最大的变化是引入了一组新的API,用来发送、接收消息,减少了开发人员的编码量。对运行在Java EE应用服务器里的应用来说,新的API也支持 ...
给公司实习生培训,把多线程编程的知识梳理了一下,画了一个简单的图,如下:
环境准备
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=512M
获取源码
要获取源码,可以直接下载打包好的文件,也可以使用git clone命令
1、目前在页面上提供的打包文件是2013年3月8日的一个tag:jetty-9.0.0.v201 ...
在缺省配置的Red Hat Linux 6.1上运行一个大型、复杂的Java系统,如果这个Java系统会启动多个Java进程,每个进程又会有很多线程,那在运行的时候很可能会遇到java.lang.OutOfMemoryError: unable to create new native thread
遇到这个问题大家一般会想到去调整JVM的内存设置,但实际上这极可能是Linux本身的ulimit设置过小,调整JVM的内存设置根本没用。Linux本身限制了每个用户可以启用的最大进程数(Max User Processes),如果这个值相对程序来说很小,那程序运行的时候就会出现致命的错误
...
在Windows平台的Tomcat上部署应用后,应用下的个别文件可能会被Tomcat锁住,解部署的时候删除不掉那些内容,就会导致无法重部署。如果解部署删除不掉被锁的文件,Tomcat会在日志中警告说:
2013-1-9 15:44:09 org.apache.catalina.startup.ExpandWar delete严重: [D:\tomcat\apache-tomcat-7.0.32\webapps\struts2-blank] could not be completely deleted. The presence of the remaining files may cau ...
概述
每种Java EE应用服务器都为应用部署提供了多种方式,常用的有命令行、Web控制台、自动部署等。除了这些,用户还可以利用JSR-88 往Java EE应用服务器上部署应用。
JSR-88是Java EE Deployment API,定义了往Java EE应用服务器上部署应用的统一模型和API。利用JSR-88的部署工具可以采用统一的方式往不同的Java EE应用服务器上部署应用,而不用了解众多产品之间的诸多差异,从而简化部署过程。如果有相对独立的应用部署需求,或者需要往多种应用服务器上统一、无差别地部署应用,用JSR-88是个不错的选择。
JSR-88要求Java EE ...
强杀进程的方式有很多。如果应用程序需要在多个平台下运行,我们可以为不同的平台编写不同的脚本,然后在整体构建/运行的脚本里去分别调用,但这并不太利于维护。我们可以借助Ant、采用统一的方式去完成这件事情。
以强杀Java进程为例,主要思路:
使用Java自带的jps命令得到所有Java进程的信息
获得符合要求的Java进程的PID
调用强杀进程的命令杀死进程
Ant脚本片段:
<property environment="env"/>
<target name="kill-process&qu ...