`
ivywang
  • 浏览: 33902 次
  • 性别: Icon_minigender_2
  • 来自: 北京
社区版块
存档分类
最新评论
文章列表
垃圾收集器很大程度上会影响应用的吞吐量和延迟。在调优之前,首先要监控,继而进行分析。那我们先看一下如何获取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 ...
Global site tag (gtag.js) - Google Analytics