自由飞翔

我在仰望,java之上

统计

留言簿(2)

我关注的blog

阅读排行榜

评论排行榜

#

数据库小技巧

    只有注册用户登录后才能阅读该文。阅读全文

posted @ 2011-09-13 14:48 GavinMiao 阅读(38) | 评论 (0)编辑 收藏

谈谈memory leak

参考文章:

malloc/free和new/delete必须成对出现,以防止内存泄露

一、什么时候垃圾回收:
简单说:
当一块内存被jvm通过它自己的认证机制认为不再被调用的时候才会在
它认为合适的时机进行回收;
具体说:

The job of the garbage collector is to find objects that are no longer needed by an application and to remove them when they can no longer be accessed or referenced. The garbage collector starts at the root nodes, classes that persist throughout the life of a Java application, and sweeps through all of the nodes that are referenced. As it traverses the nodes, it keeps track of which objects are actively being referenced. Any classes that are no longer being referenced are then eligible to be garbage collected. The memory resources used by these objects can be returned to the Java virtual machine (JVM) when the objects are deleted.

So it is true that Java code does not require the programmer to be responsible for memory management cleanup, and that it automatically garbage collects unused objects. However, the key point to remember is that an object is only counted as being unused when it is no longer referenced.

垃圾收集器的工作是找到由一个应用程序不再需要的对象,在他们不再被访问或引用将其删除。垃圾收集器从根节点、在整个Java应用的生命中存在的类
开始,并通过扫描所有被引用的节点。由于它遍历的节点,它跟踪哪些对象正在积极引用。任何不再被引用的的类,然后才有资格被垃圾收集。
当对象被删除时,他们所占用的内存资源,才被Java虚拟机(JVM)回收。
二、什么样的java代码容易memory leak?
1.
首先一种情况是collection或者是map一直被put数据,没有机会remove,导致OutOfMemoryError。尤其是当collection或者是map被设计成static变量的时候,它就是个global性质的变量,很可能永远不会被赋为null。这也是不建议使用static变量的一个原因。
2.
在listener的模式下,如果listener一直在注册register而没有机会remove也会导致OutOfMemoryError。其实listener也是一个list的结构,本质上是一样的。很多listener是以匿名类被构造和注册到被监听类上面去的, 而被监听类如果也没有正确remove注册的listener的话也会导致OutOfMemoryError。


待续...........

posted @ 2011-09-07 14:04 GavinMiao 阅读(346) | 评论 (0)编辑 收藏

各数据库数据类型比较

posted @ 2011-09-06 13:01 GavinMiao 阅读(366) | 评论 (0)编辑 收藏

异常总结:MySQL+Hibernate下连接空闲8小时自动断开问题解决方案

mysql﹥ show global variables like 'wait_timeout';

+---------------+---------+

| Variable_name | Value |

+---------------+---------+

| wait_timeout | 28800 |

+---------------+---------+ 

我们只要修改mysql5的配置文件“my.ini”(mysql5 installation dir),增加一行:

wait_timeout=31536000

interactive_timeout=31536000

重启生效,需要同时修改这两个参数。



posted @ 2011-09-06 12:04 GavinMiao 阅读(381) | 评论 (0)编辑 收藏

异常积累:el-api.jar冲突

访问登录jsp时:java.lang.LinkageError: loader constraints violated when linking javax/el/ExpressionFactory class;
参考文章:http://www.cnblogs.com/ztf2008/archive/2009/03/17/1413965.html
解释:
加载时违背约束条件。
错误的原因:
tomcat/lib下的el-api.jar与项目WEB-INF/lib目录下的el-api.jar冲突。
解决方式:
把项目目录下的el-api.jar删除即可。

本人总结原因:项目应部署在tomcat5.5上,部署在tomcat6.0上会报上面的jar包冲突的错误

posted @ 2011-09-06 10:26 GavinMiao 阅读(3028) | 评论 (0)编辑 收藏

mysql错误积累:Data too long for column问题

导入数据的时候,MYSQL 报错:Data too long for column 

解决办法: 

在my.ini里找到(此文件在mysql安装目录下) 
sql-mode=”STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION” 
把其中的STRICT_TRANS_TABLES,去掉, 
或者把sql-mode=STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION 

注释掉,然后重启mysql就ok了 !

posted @ 2011-09-05 18:08 GavinMiao 阅读(329) | 评论 (0)编辑 收藏

UE设置java环境

    只有注册用户登录后才能阅读该文。阅读全文

posted @ 2011-09-05 17:29 GavinMiao 阅读(77) | 评论 (0)编辑 收藏

js计时器

    只有注册用户登录后才能阅读该文。阅读全文

posted @ 2011-09-04 01:53 GavinMiao 阅读(83) | 评论 (0)编辑 收藏

mysql日期、时间格式

select current_date;
create table test(‘日期’ date);
insert into test values('2011-09-03');
create table test2(日期 date,时间 datetime);
create table test(日期 date,时间 timestamp);
insert into test2 values('2011-09-03','2011-09-03 02:00:00');
insert into test values('2011-09-03','2011-09-03 02:00:00');

mysql插入当前时间

now()函数以`yyyy-mm-dd hh:mm:ss返回当前的日期时间,可以直接存到datetime字段中。 
curdate()以’yyyy-mm-dd’的格式返回今天的日期,可以直接存到date字段中。 
curtime()以’hh:mm:ss’的格式返回当前的时间,可以直接存到time字段中。

 

posted @ 2011-09-03 12:35 GavinMiao 阅读(388) | 评论 (0)编辑 收藏

DWR反转Ajax

    只有注册用户登录后才能阅读该文。阅读全文

posted @ 2011-09-03 00:15 GavinMiao 阅读(73) | 评论 (0)编辑 收藏

仅列出标题
共14页: First 上一页 5 6 7 8 9 10 11 12 13 下一页 Last