- 浏览: 536555 次
- 性别:
- 来自: 杭州
最新评论
-
飞天奔月:
public List<String> gener ...
实践中的重构30_不做油漆匠 -
在世界的中心呼喚愛:
在世界的中心呼喚愛 写道public class A {
...
深入理解ReferenceQueue GC finalize Reference -
在世界的中心呼喚愛:
在世界的中心呼喚愛 写道在世界的中心呼喚愛 写道在classB ...
深入理解ReferenceQueue GC finalize Reference -
在世界的中心呼喚愛:
在世界的中心呼喚愛 写道在classB的finalize上打断 ...
深入理解ReferenceQueue GC finalize Reference -
在世界的中心呼喚愛:
iteye比较少上,如果可以的话,可以发e-mail交流:ch ...
深入理解ReferenceQueue GC finalize Reference
文章列表
JVM通过Ergonomics技术已经尽可能的让jvm不要我们去操心底层的细节,而尝试提供给我们好的服务。
但是,内存管理和gc并没有一个一劳永逸的方案。
GC有可能成为性能的瓶颈。很多时候还是要程序员自己动手去做一些调优。
以下简要介绍一些关键概念。
JVM会自动选择使用server mode还是client mode。但是我们一样可以手工设置。
java -server -client
JVM的内存管理分为堆内存(Heap Memory)和非堆内存。
Heap Memory用来存储大部分对象。
非堆内存=Code Cache+Permanent Generation。
其中Code Ca ...
javaeye的blog的计数是有问题的,有时候会出现文章数计数和真实的值不一致的情况,更有出现负数的情况。我的博客的一个分类有过-1文章数的统计。这个不一致的bug还可以理解,负数的bug应该修正起来比较简单。
- 2009-10-21 02:37
- 浏览 1154
- 评论(0)
典型的Notification一般有两种架构,一种是点对点,一种是发布订阅模型。
主要讨论发布订阅模型。
主要的类如下:
Topic,可以发布的话题。包含一个Topic的元数据。
Subscription,一个消费者(可以是系统或者用户)的一个订阅,一个订阅可以订阅一个Topic,并且可以设置一些field来filter该Topic,比如只对发布与某个时间段的Topic进行订阅。
NotificationMessage,一个话题消息的实例。
Notification支持消息的异步,支持订阅者不在线时的新生成的话题消息不会丢失(即消息的可靠传输),通过把话题消息保存在db中,同时有一个守护线程 ...
《Effective Java》无疑是java领域的经典著作。第二版出来后,看了看,然后和第一版对比一下。
下面介绍第二版的变更,以及揣摩作者的意图。
删掉了原来的Substitutes for C constructs一章。
C2 Creating and Destroying Objects
Item 1 Consider static factory methods instead of constructors.
Item 2 Consider a builder when faced with many constructor parameters.
新加的一个条目,这个 ...
Geronimo在重复装载一个工程的时候抛java.lang.OutOfMemoryError: PermGen space 异常。
JVM的PermGen内存溢出了。
改动setjavaenv.bat中的设置解决该问题。
set JAVA_OPTS="-Xms512m" "-Xmx512m" "-XX:PermSize=512m" "-XX:MaxPermSize=512m"
JConsole中关于内存分区的说明。
Eden Space (heap): 内存最初从这个线程池分配给大部分对象。
Survivo ...
Lock的意义和synchronized一致,并且增加了一些功能。锁的获得和释放可以分开在不同的地方。多了锁获得超时。可中断获得锁的过程。
Wait, notify和notifyAll家族的功能用Condition实现了。同样支持wait超时,可中断wait。
ReentrantLock可以设置锁的公平性。防止线程饥饿。
ReentrantReadWriteLock也可以设置锁的公平性。
double check可用于当一个field的创建比较费时,而该field又不一定被使用的情况。
private Object lock = new Object();
private volatile String content;
public String getContent() {
String t = content;
if (t == null) {
synchronized (lock) {
t = content;
if (t == null) {
t = content = "InitString&q ...
类对线程的支持可以分为以下几类:
1 Immutable。
2 unconditionally thread safe,比如ConcurrentHashMap。
3 conditionally thread safe,比如Collections.synchronized返回的东西,iterator需要外部同步。
4 not thread safe,需要调用方同步。
5 thread hostile。
用户
为了唯一确定一个用户,用户=user+host+password.
user不指定的话,为匿名用户。
hostname可以用%匹配所有host.
其中,password可以不设置,但是从安全的角度想,所有的user还是设置一个密码比较好。
权限
MySql中所有的操作都有对应的权限,权限存储在mysql数据库中,系统用作检查的ACL是在server启动时载入内存的。
权限检查过程
1 连接时对用户检查。
主要是检查该用户是否可以连接server。
有可能有多个现有条目和用户匹配,系统会对现有条目排序后采用第一个匹配的用户。
排序的规则为先Host,后User,其中,指定的hos ...
外围赛 巴西3:1阿根廷
阿根廷一堆小个子,灵活有突破,但是没有组织。
外围赛 葡萄牙 3:0 匈牙利
上半场葡萄牙踢得那叫一个烂。解说来来去去就是C罗怎么怎么样,明明下场半天了,还在一直吹,烦死了。
外围赛 阿根廷 2:1 秘鲁
该比赛很关键,上半场我是睡着看的,基本上两队都有机会,但是没有把握住。
下半场阿根廷先进一球,秘鲁开始拼命。过了一会大风大雨的,感觉该球赛变成了一个彻头彻尾的战争。应该说阿根廷命挺好的,秘鲁很多机会都是只差一点点啊,还有门框什么的。感觉天让阿根廷赢,90分钟的时候秘鲁扳平,感觉阿根廷应该完了,谁知道93的时候阿根廷又反超,老马像个企鹅一样滑在风雨交加的草皮上,老婆 ...
09/10的欧洲冠军杯
- 博客分类:
- 生活娱乐
欧冠小组赛 巴萨0:0国米
精彩的比赛,无聊的比分。
欧冠小组赛 RM3:0马赛
很久没有看RM的比赛了,原来主力加替补都可以倒背的阵容早已经不知道哪里去了。第一个看到的熟悉的面孔是圣卡西,本来以为会很高兴找到熟悉的 ...
呵呵,突然发现前天写的帖子一天不到就被被顶到了javaeye首页,心情好啊。
论坛:深入理解java的clone
博客:深入理解java的clone
这个也到首页了。看来可以计划写一个深入xx系列了。
论坛:深入理解java的finalize
博客:深入理解java的finalize
- 2009-10-11 03:15
- 浏览 1113
- 评论(0)
第2版 Exceptions
Item 57: Use exceptions only for exceptional conditions
Item 58: Use checked exceptions for recoverable conditions and runtime exceptions for programming errors
Item 59: Avoid unnecessary use of checked exceptions
Item 60: Favor the use of standard exceptions
Item ...
- 2009-10-08 14:02
- 浏览 1195
- 评论(0)
第2版 General Programming
Item 45: Minimize the scope of local variables
Item 46: Prefer for-each loops to traditional for loops
新增条目,增加了对新的语言特性的for-each的讲解,以及什么时候使用这个特性比较好的说明。
Item 47: Know and use the libraries
Item 48: Avoid float and double if exact answers are required
...
- 2009-10-08 14:00
- 浏览 1160
- 评论(0)
第2版 Methods
Item 38: Check parameters for validity
Item 39: Make defensive copies when needed
Item 40: Design method signatures carefully
Item 41: Use overloading judiciously
Item 42: Use varargs judiciously
Item 42为新的条目。
Item 43: Return empty arrays or collections, not nulls
Item 43加入了Collecti ...
- 2009-10-06 18:20
- 浏览 922
- 评论(0)