解决Java内存泄露问题方案
由 maggie 于 星期三, 2010-01-06 11:30 发表内存泄漏的慨念
1.c/c++是程序员自己治理内存,Java内存是由GC自动回收的。
我虽然不是很熟悉C++,不过这个应该没有犯常识性错误吧。
2.什么是内存泄露?
内存泄露是指系统中存在无法回收的内存,有时候会造成内存不足或系统崩溃。
在C/C++中分配了内存不释放的情况就是内存泄露。
3.Java存在内存泄露
我们必须先承认这个,才可以接着讨论。虽然Java存在内存泄露,但是基本上不用很关心它,非凡是那些对代码本身就不讲究的就更不要去关心这个了。
Java中的内存泄露当然是指:存在无用但是垃圾回收器无法回收的对象。而且即使有内存泄露问题存在,也不一定会表现出来。
4.Java中参数都是传值的。
对于基本类型,大家基本上没有异议,但是对于引用类型我们也不能有异议。
Java是如何管理内存
对Java进行初始化应避免的问题
由 maggie 于 星期二, 2010-01-05 09:36 发表为了说明这个问题先给大家出个问题吧:
请看代码:
[code]
view plaincopy to clipboardprint?
public abstract class A {
public A() {
initMethod();
}
public abstract void initMethod();
}
public abstract class A {
public A() {
initMethod();
}
public abstract void initMethod();
}
view plaincopy to clipboardprint?
public class B extends A {
static String staticStr = "static1";
private String testStr = "Test1";
/*
* (non-Javadoc)
*
* @see A#initMethod()
*/
public void initMethod() {
如何改善系统对JVM的使用方式
由 maggie 于 星期二, 2010-01-05 09:30 发表应用程序服务器是一个 Java 进程,它需要 Java 虚拟机(JVM)才能运行以及支持它所运行的 Java 应用程序。在配置应用程序服务器的过程中,可以对设置进行微调以改善系统对 JVM 的使用方式。
关于本任务
JVM 为基于 Java 的应用程序提供了运行时执行环境。WebSphere Application Server 是 JVM 运行时环境与基于 Java 的服务器运行时的组合。它可以在不同 JVM 提供程序提供的 JVM 上运行。要确定正在运行 Application Server 的 JVM 的提供程序,请从 WebSphere Application Server 的app_server_root/java/bin 目录中发出 java -fullversion 命令。您也可以检查其中一个服务器的 SystemOut.log。当应用程序服务器启动时,Websphere Application Server 会将关于 JVM 的信息(包括 JVM 提供程序信息)写入此日志文件。
从调整 JVM 的观点看,有两种主要的 JVM 类型:
IBM JVM
基于 Sun HotSpot 的 JVM,其中包括 Solaris 上的 Sun HotSpot JVM 以及 HP 的 JVM for HP-UX
获取内部类静态成员的方法
由 maggie 于 星期二, 2010-01-05 09:21 发表最近需要些一个可配置的索引构建程序,需要在运行时调用Lucene包的如下类及其成员:
引用
Nested Class Summary static class Field.Index Specifies whether and how a field should be indexed. static class Field.Store Specifies whether and how a field should be stored. static class Field.TermVector Specifies whether and how a field should have term vectors. lucene api中称之为Nested Class,意为嵌套类,而嵌套类内部的File.Index的成员又是静态成员。
引用
[code]
Field Summary
static Field.Index ANALYZED
Index the tokens produced by running the field's value through an Analyzer.
微软与Eclipse成伙伴推进Azure开发
由 maggie 于 星期一, 2009-11-02 15:20 发表外媒消息,Eclipse欧洲峰会于本周在德国的路德维希堡举行了。微软在此宣布了一系列项目计划。其中一项是协助帮助Eclipse的开发人员开发基于Windows 7 和Windows Server 2008 R2的新功能。另一项是可以让Java和PHP的开发者在Eclipse的开发环境下,开发适用于微软Azure云平台的应用程序。对于Silverlight暨微软的富媒体应用的支持也在这些计划项目之列。
在对Windows 7 和Windows Server的支持方面,微软已经联合了Tasktop技术公司,该公司掌握着Mylyn技术。2010年上半年,该公司将发布基于EPL协议发布Eclipse扩展包。作为该公司太阳神计划的一部分,将提供专为Windows 7任务栏元素扩展而设计的SWT工具箱。
Soyatec科技公司帮助微软开发针对Silverlight的Eclipse工具。这样Eclipse程序员就可以在熟悉的环境下为Azure开发Web应用程序了,仅仅需要安装一些专为Windows Azure设计的开源插件。目前还只有一个技术社区预览版(CTP),不过估计年底1.0版将会推出;并且已经开始为Java程序员开发一款免费的Windows Azure SDK了。
SAF将消失于Java 7
由 milk 于 星期二, 2009-10-13 16:44 发表Sun已经决定在Java 7中放弃JSR 296:Swing Application Framework(SAF)。规范的领导者Alexander Potochkin在其博客中写到: 在多次讨论后,大家并没有就Swing Application Framework API达成共识,我们觉得还需要进一步设计才行。 我们已经将SAF API提交至JDK 7 M5了,进度就在那摆着呢,时间太紧了,所以我们得把SAF从JDK 7的里程碑版中移除。
如何启动Java应用的Shell脚本
由 maggie 于 星期六, 2009-10-10 18:01 发表对于Java应用程序(非web应用),在部署后,常常需要一个启动脚本来加载一些第三方的jar包,并启动应用。
对于java应用程序,作者一般喜欢将程序的目录结构写成如下的方式:
myapp |----lib |----bin |----packages
一些配置文件和属性文件
一个startup.sh、或bat启动脚本
其中,packages是程序的根包。其中有子包和class文件等。
在包中,有一个Main.calss的类,这个作为程序的入口。
下面给出一个最一般的写法:
[code]
startup.sh #!/bin/sh programdir="."
num=$#
temp=$CLASSPATH
#setting libs path
libs=../lib/*
append(){
temp=$temp":"$1
}
for file in $libs; do
append $file
done
export CLASSPATH=$temp:.:../:$programdir
最新消息
由 maggie 于 星期六, 2009-09-19 14:20 发表Google正在进行名为Noop的语言项目,针对JVM。这将是一个看起来很像Java的、运行在JVM上的语言,而目标则是在语言起步的时候就建立起依赖注入(dependency injection)以及可测试性,而无须像其他语言一样依靠第三方库。官网上称Noop的意图在于鼓励良好的编码习惯。
依赖注入之外,Noop关注可测试性、不变性、可阅读性、属性(properties)以及强类型。Noop还注重可执行的、更新及时的文档。Noop官方网站是这么叙述的:“依赖注入改变了我们编写软件的方法。”
Jave入门必读:表单数据存储处理方法
由 milk 于 星期四, 2009-09-10 14:14 发表摘 要
本文以Oracle数据库为例,介绍了在采用JSP技术开发WEB应用时一种简便通用的表单数据存储处理方法,以减轻开发工作量,同时提供了主要的程序代码。
引言
J2EE(Java 2 Enterprise Edition)技术已广泛应用在Web应用开发中,其中的JavaBean、Servlet技术为开发者提供了更为清晰的开发环境,使用JSP技术表现页面,使用Servlet技术完成大量的业务处理,使用Bean来存储数据及一些业务处理。在WEB应用中,业务数据存储到数据库中的处理工作经常很繁重,其中一种主要的形式就是表单数据存储到数据库,整个应用处理过程牵涉到大量的这种数据存储操作,对每个表单都要单独编写相应的数据存储程序,花费了开发人员大量的时间和精力。采用什么方法来减轻表单数据存储的开发工作量是值得研究的问题。
两种常见的表单数据存储处理方法
1、对每一表单都编写相应的程序代码
在JSP页面或JavaBean或Servlet中,使用request. getparameter()函数逐一提取表单提交的数据,或编写相应的JavaBean,使用setProperty方法将数据自动取到JavaBean中,然后生成SQL语句(insert,update,delete),最后执行executeupdate()函数完成数据表存储。
公告栏文字滚动效果代码
由 milk 于 星期四, 2009-09-10 14:04 发表首先要掌握一个概念:一个字符串在计算机屏幕中所占的像素,比方说取一个JLabel里面的Text所占的宽和高,方法如下: (主要用到FontMetrics类)
import java.awt.FontMetrics;
import javax.swing.JLabel;
JLabel label = new JLabel("test Label ");
FontMetrics metrics = label.getFontMetrics(label.getFont());
int textH = metrics.getHeight(); //字符串的高,只和字体有关
int textW = metrics.stringWidth(label.getText()); //字符串的宽
通常情况下,一个空格占3个像素。
具体代码如下:
[code]
Test.java
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.FontMetrics;










最新评论
4 天 13 小时之前
4 天 13 小时之前
1 周 8 小时之前
1 周 8 小时之前
1 周 11 小时之前
1 周 14 小时之前
1 周 14 小时之前
1 周 14 小时之前
1 周 14 小时之前
1 周 14 小时之前