2023年3月4日
摘要: 页面表单:code highlighting produced by actipro codehighlighter (freeware)http://www.codehighlighter.com/--> 阅读全文
2012年11月16日
资源pom.xml
<properties>
<slf4j.version>1.7.1slf4j.version>
<log4j.version>1.2.17log4j.version>
<logback.version>1.0.1logback.version>
properties>
<dependencymanagement>
<dependencies>
<dependency>
<groupid>org.slf4jgroupid>
<artifactid>slf4j-apiartifactid>
<version>${slf4j.version}version>
dependency>
<dependency>
<groupid>org.slf4jgroupid>
<artifactid>jcl-over-slf4jartifactid>
<version>${slf4j.version}version>
<scope>runtimescope>
dependency>
<dependency>
<groupid>org.slf4jgroupid>
<artifactid>jul-to-slf4jartifactid>
<version>${slf4j.version}version>
<scope>runtimescope>
dependency>
<dependency>
<groupid>org.slf4jgroupid>
<artifactid>slf4j-log4j12artifactid>
<version>${slf4j.version}version>
<scope>runtimescope>
dependency>
<dependency>
<groupid>org.slf4jgroupid>
<artifactid>log4j-over-slf4jartifactid>
<version>${slf4j.version}version>
<scope>runtimescope>
dependency>
<dependency>
<groupid>ch.qos.logbackgroupid>
<artifactid>logback-coreartifactid>
<version>${logback.version}version>
<scope>runtimescope>
<optional>trueoptional>
dependency>
<dependency>
<groupid>ch.qos.logbackgroupid>
<artifactid>logback-classicartifactid>
<scope>runtimescope>
<version>${logback.version}version>
<optional>trueoptional>
dependency>
<dependency>
<groupid>ch.qos.logbackgroupid>
<artifactid>logback-accessartifactid>
<version>${logback.version}version>
<scope>runtimescope>
<optional>trueoptional>
dependency>
dependencies>
dependencymanagement>
a.slf4j/logback 组合(logback.xml)
<dependency>
<groupid>org.slf4jgroupid>
<artifactid>slf4j-apiartifactid>
dependency>
<dependency>
<groupid>ch.qos.logbackgroupid>
<artifactid>logback-coreartifactid>
dependency>
<dependency>
<groupid>ch.qos.logbackgroupid>
<artifactid>logback-classicartifactid>
dependency>
b.slf4j/log4j组合(log4j.properties or log4j.xml)
<dependency>
<groupid>org.slf4jgroupid>
<artifactid>slf4j-apiartifactid>
dependency>
<dependency>
<groupid>log4jgroupid>
<artifactid>log4jartifactid>
dependency>
<dependency>
<groupid>org.slf4jgroupid>
<artifactid>slf4j-log4j12artifactid>
dependency>
c.如果是已用了commons-logging/log4j想用用slf4j/logback,那也容易用下面的配置
<dependency>
<groupid>org.slf4jgroupid>
<artifactid>slf4j-apiartifactid>
dependency>
<dependency>
<groupid>org.slf4jgroupid>
<artifactid>jcl-over-slf4jartifactid>
dependency>
<dependency>
<groupid>org.slf4jgroupid>
<artifactid>log4j-over-slf4jartifactid>
dependency>
<dependency>
<groupid>ch.qos.logbackgroupid>
<artifactid>logback-coreartifactid>
dependency>
<dependency>
<groupid>ch.qos.logbackgroupid>
<artifactid>logback-classicartifactid>
dependency>
再到http://logback.qos.ch/translator/welcome.do,將你原來的log4j.properties转成logback.xml
就可以將commons-logging.jar 跟 log4j.jar自你系統中移除了
2012年11月11日
环 境 a.下载 beansoft的绿色版mysql
(copy 成两份 ,master,slave) 取mysql\mysql50green下内容复制
b.
在cmd命令行模式下进入master
\bin 执行mysqld install
master命令。作用是为mysql安装一个服务,服务名是
master 。同理操作slave 。(注意
mysqld =mysqld-nt
)c.
在运行里运行regedit,打开windows注册表编辑器,在hkey_local_machine\system\currentcontrolset\services\master 打开,修改下面的imagepath数值: "x:\
master \bin\mysqld" --defaults-file="d:\master\my.ini"
master 确定,退出注册表编辑器。 (同理操作slave)
d.定义my.ini拷贝到 x
:\ master 下面
[client]
port = 3308
[mysqld]
port =3308
server-id = 1
binlog-do-db=test1 ##要同步的数据库名为test1
log-bin =mysql-bin
e.定义my.ini拷贝到x:\slave下面
[client]
port = 3309
[mysqld]
port = 3309
server-id = 2
master-host = 127.0.0.1
master-user = slaver1
master-password = slaver1pwd
master-port = 3308
replicate-do-db=test1 ##要同步的数据库
f. 然后在master
console 执行: grant file,select,replication slave on *.* to 'slaver1'@'127.0.0.1' identified by 'slaver1pwd';
开一个新账号(用户名:slaver1 密码:slaver1pwd)并赋于权限
运行mysqld.exe,并创建新数据库test1,可在console下输入:show master status\g查看状态!
*************************** 1. row*****************
file: mysql-bin.000305
position: 98
binlog_do_db: test1
binlog_ignore_db:
g.
运行slaver 的mysqld.exe,在console窗口执行 show slave status\g 查看状态,如下:
mysql> show slave status\g
*************************** 1. row ***************************
slave_io_state: waiting for master to send event
master_host: 127.0.0.1
master_user: slaver1
master_port: 3308
connect_retry: 60
master_log_file: mysql-bin.000002
read_master_log_pos: 2495
relay_log_file: 2012-0416-1022-relay-bin.000007
relay_log_pos: 235
relay_master_log_file: mysql-bin.000002
slave_io_running: yes
slave_sql_running: yes
replicate_do_db: test1
replicate_ignore_db:
replicate_do_table:
replicate_ignore_table:
replicate_wild_do_table:
replicate_wild_ignore_table:
last_errno: 0
last_error:
skip_counter: 0
exec_master_log_pos: 2495
relay_log_space: 235
until_condition: none
until_log_file:
until_log_pos: 0
master_ssl_allowed: no
master_ssl_ca_file:
master_ssl_ca_path:
master_ssl_cert:
master_ssl_cipher:
master_ssl_key:
seconds_behind_master: 0
1 row in set (0.00 sec)
2012年4月24日
1 ::windows xp配置
2 set pan=%0
3 set pan=%pan:~1,3%
4 set devenvdir=%pan�v_for_jee
5
6 ::windows 7手动输入盘符,放开注释
7 set devenvdir=x:\dev_for_jee
8
9 wmic environment where "name='java_home'" delete
10 wmic environment where "name='mvn_home'" delete
11 wmic environment where "name='classpath'" delete
12 wmic environment where "name='m2_repo'" delete
13 wmic environment create name="java_home",username="",variablevalue="�venvdir%\java1.6"
14 wmic environment create name="mvn_home",username="",variablevalue="�venvdir%\maven3.0.4"
15 wmic environment create name="m2_repo",username="",variablevalue="�venvdir%\repository"
16 wmic environment create name="classpath",username="",variablevalue="%java_home%\lib\dt.jar;%java_home%\lib\tools.jar;%java_home%\bin;.;"
17 wmic environment where "name='path' and username=''" set variablevalue="%%java_home%%\bin;%%mvn_home%%\bin;%%m2_repo%%;%path%"
18 pause
19
2011年10月25日
这里根据平时遇到的情况和相关资料进行一个总结。常见的一般会有下面三种情况:
1.outofmemoryerror: java heap space
2.outofmemoryerror: permgen space
3.outofmemoryerror: unable to create new native thread.
对于前两种情况,在应用本身没有内存泄露的情况下可以用设置tomcat jvm参数来解决。(-xms -xmx -xx:permsize -xx:maxpermsize)
最后一种可能需要调整操作系统和tomcat jvm参数同时调整才能达到目的。
第一种:是堆溢出。
在jvm中如果98%的时间是用于gc且可用的 heap size 不足2%的时候将抛出此异常信息。
没有内存泄露的情况下,调整-xms -xmx参数可以解决。
-xms:初始堆大小
-xmx:最大堆大小
但堆的大小受下面三方面影响:
1.相关操作系统的数据模型(32-bt还是64-bit)限制;(32位系统下,一般限制在1.5g~2g;我在2003 server 系统下(物理内存:4g和6g,jdk:1.6)测试 1612m,64为操作系统对内存无限制。)
2.系统的可用虚拟内存限制;
3.系统的可用物理内存限制。
堆的大小可以使用 java -xmx***m version 命令来测试。支持的话会出现jdk的版本号,不支持会报错。
-xms -xmx一般配置成一样比较好比如set java_opts= -xms1024m -xmx1024m
第二种:永久保存区域溢出
permgen space的全称是permanent generation space,是指内存的永久保存区域。这一部分用于存放class和meta的信息,class在被 load的时候被放入permgen space区域,它和和存放instance的heap区域不同,gc(garbage collection)不会在主程序运行期对permgen space进行清理,所以如果你的app会load很多class的话,就很可能出现permgen space错误。这种错误常见在web服务器对jsp进行pre compile的时候。但目前的hibernate和spring项目中也很容易出现这样的问题。 的帖子有讨论的这个问题。可能是由于这些框架会动态class,而且jvm的gc是不会清理pemgen space的,导致内存溢出。
这一个一般是加大-xx:permsize -xx:maxpermsize 来解决问题。
-xx:permsize 永久保存区域初始大小
-xx:permsize 永久保存区域初始最大值
这一般结合第一条使用,比如 set java_opts= -xms1024m -xmx1024m -xx:permsize=128m -xx:permsize=256m
有一点需要注意:java -xmx***m version 命令来测试的最大堆内存是 -xmx与 -xx:permsize的 和 比如系统支持最大的jvm堆大小事1.5g,那 -xmx1024m -xx:permsize=768m 是无法运行的。
第三种:无法创建新的线程。
这种现象比较少见,也比较奇怪,主要是和jvm与系统内存的比例有关。
这种怪事是因为jvm已经被系统分配了大量的内存(比如1.5g),并且它至少要占用可用内存的一半。有人发现,在线程个数很多的情况下,你分配给jvm的内存越多,那么,上述错误发生的可能性就越大。
产生这种现象的原因如下():
每一个32位的进程最多可以使用2g的可用内存,因为另外2g被操作系统保留。这里假设使用1.5g给jvm,那么还余下500m可用内存。这500m内 存中的一部分必须用于系统dll的加载,那么真正剩下的也许只有400m,现在关键的地方出现了:当你使用java创建一个线程,在jvm的内存里也会创 建一个thread对象,但是同时也会在操作系统里创建一个真正的物理线程(参考jvm规范),操作系统会在余下的400兆内存里创建这个物理线程,而不 是在jvm的1500m的内存堆里创建。在jdk1.4里头,默认的栈大小是256kb,但是在jdk1.5里头,默认的栈大小为1m每线程,因此,在余 下400m的可用内存里边我们最多也只能创建400个可用线程。
这样结论就出来了,要想创建更多的线程,你必须减少分配给jvm的最大内存。还有一种做法是让jvm宿主在你的jni代码里边。
给出一个有关能够创建线程的最大个数的估算公式:
(maxprocessmemory - jvmmemory - reservedosmemory) / (threadstacksize) = number of threads
对于jdk1.5而言,假设操作系统保留120m内存:
1.5gb jvm: (2gb-1.5gb-120mb)/(1mb) = ~380 threads
1.0gb jvm: (2gb-1.0gb-120mb)/(1mb) = ~880 threads
在2000/xp/2003的boot.ini里头有一个启动选项,好像是:/pae /3g ,可以让用户进程最大内存扩充至3g,这时操作系统只能占用最多1g的虚存。那样应该可以让jvm创建更多的线程。
因此这种情况需要结合操作系统进行相关调整。
因此:我们需要结合不同情况对tomcat内存分配进行不同的诊断才能从根本上解决问题。
参考资料(从这些资料中受益良多):
from:http://www.blogjava.net/george/archive/2009/08/18/291579.html
2011年10月13日
只有注册用户登录后才能阅读该文。