关于资源占用的问题?

02-12-25 追风
如果一个java程序有10个方法,并且每个方法都有很多操作(包括数据库连接,文件操作等),如果我每次只使用其中一个方法,那生成该类的实例会不会浪费很多资源,是不是应该把这些方法定义成静态的?

geshe
2002-12-25 14:12
对于一个程序来说,在内存一般会这么放,一部份放程序代码,一部份放用户数据,包括堆和栈。

JVM怎么放,我不知道,应该差不多吧。对于一个类中的很多函数,如果你不调用它,它仅仅会占用放程序代码的那部分,不会影响到用户数据的那部分。类的实例,应该在它的内存空间,放一些指向这些类函数入口的指针,类成员变量应该是放在类的实例里的,而静态成员,是放在类的空间里,也就是说,在类调入内存里,类的方法的定义已经进入内存,但它不会随着类实例的增加,而发生变动。

说得应该错的不多。
:D

hxz
2002-12-25 15:15
在看候捷的com系列中有说到!是楼上这样说的(C++)
类实例也是一个指针而已!但一个很大的类确实不明智,至少不方便阅读

banq
2002-12-25 20:29
如果该类的方法是工具性质,可以做成静态。

追风
2002-12-26 08:46
方法很多,确实不方便阅读,可如果使用模式来解决,我怕类的数目会太多,而且每个类里只有一个方法。暂时我把方法定义为静态同步.

hxz
2002-12-26 15:15
to banq:
正好要问一下,为什么工厂方法中都会用一个静态方法如:
public static ForumFactory getInstance(Authorization authorization) {
    //If no valid authorization passed in, return null.
    if (authorization == null) {
......

hxz
2002-12-26 15:18
因为静态方法也可以看做是跟这个类的实例没有太大的关系!面向对象中都有静态方法是单独存储的!象如上的静态方法在一定条件也可以单独分开啊?

hxz
2002-12-26 15:35
只是一个单态模式,清楚一些了 哈哈

hxz
2002-12-26 15:37
to 楼主
你说"如果使用模式来解决..."是指什么模式呢?

banq
2002-12-26 17:40
如果用模式的话,singleton这个工具类。

henry.t
2003-01-09 18:10
就这个问题问一句:

public String FormatString(Connection con,String s)
{
if(s==null) return s;

int num = -1;
num = s.indexOf(".");
if(num != -1)
{
if((num+3)<s.length())
{
s = s.substring(0,num+3);
}
}
……
使用con
……
return s;
}

这个方法是一个工具类的,类没有私有成员,方法不操作静态的或者别的文件等等,只使用传进来的参数和方法内定义的参数,请问,如果此类的方法都是这样的,那么 1 它可以作为BANG所说的“工具类“吗 ?
2 可以把方法做成静态的吗??
3 可以把此类做成APPLICATION BEAN或者用单态模式词类吗?
不好意思,我有点罗缩了

henry.t
2003-01-09 23:23
怎么不回答啊?在问一句,怎么样菜是静态同步的方法?????

bradwoo8621
2003-01-09 23:51
pulblic synchronized static method1() {
}

fuzhou
2003-01-10 08:40

如果象你所说的不操作其他的东西,那就可以直接写成静态的,不用考虑同步了吧

hxz
2003-01-10 11:01
to :fuzhou
为什么不要同步呢?至少你要引用形参啊!而形参是object的,就有可能对形参的引用!
你可以看看这里:http://www.javaworld.com/javaworld/jw-02-2001/jw-0209-double.html
使用一个引用也有同步问题的!

2Go 1 2 下一页