论坛首页 Java企业应用论坛

讨论:单例和静态方法的深入讨论

浏览 14182 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (3)
作者 正文
   发表时间:2011-01-10  
star385 写道
超级潜水员 写道
蛋疼的忧虑,从没有担心class占内存及回收的,你就算有几亿行代码吧? 能占1G内存么?

天哪,如果一个程序假如就能占1G内存的话,完蛋了,还让不让操作系统干活了?
占内存的多少根代码行数没有直接关系吧
while (true) {
    Object o = new Object();
}
三行代码能占多少内存?


。。。。 你的操作系统1G内存吗? Eclipse都可以上1G以上。
0 请登录后投票
   发表时间:2011-01-10  
star385 写道
超级潜水员 写道
蛋疼的忧虑,从没有担心class占内存及回收的,你就算有几亿行代码吧? 能占1G内存么?

天哪,如果一个程序假如就能占1G内存的话,完蛋了,还让不让操作系统干活了?
占内存的多少根代码行数没有直接关系吧
while (true) {
    Object o = new Object();
}
三行代码能占多少内存?



不知道你是不是极品至极点了? 你有见过多少程序是有几亿行代码的?

自古SB出二楼,真没错,附赠你一条咨讯。


【赛迪网讯】10月23日消息,一项分析发现,在最近发布2.6.27版本Linux内核之后,包括Linux内核文件在内的源代码行数已经超过了1000万行。
0 请登录后投票
   发表时间:2011-01-11  
mercyblitz 写道
star385 写道
超级潜水员 写道
蛋疼的忧虑,从没有担心class占内存及回收的,你就算有几亿行代码吧? 能占1G内存么?

天哪,如果一个程序假如就能占1G内存的话,完蛋了,还让不让操作系统干活了?
占内存的多少根代码行数没有直接关系吧
while (true) {
    Object o = new Object();
}
三行代码能占多少内存?


。。。。 你的操作系统1G内存吗? Eclipse都可以上1G以上。

不想跟你做意气之争,你素质太低,
就事论事地说一下吧,
除去操作系统级别的进程和线程,你不可能只单独运行一个程序,
就以Java程序来说,你至少还需要运行虚拟机,运行虚拟机还需要相关的支持程序,
假如这些程序都需要占用1G以上,你有几个1G,
我见过一个公司的服务器,内存也才64G,
我都说了,代码行数和内存占用量没有直接联系,你还举那个例子有意义吗?
0 请登录后投票
   发表时间:2011-01-11   最后修改:2011-01-11
star385 写道
mercyblitz 写道
star385 写道
超级潜水员 写道
蛋疼的忧虑,从没有担心class占内存及回收的,你就算有几亿行代码吧? 能占1G内存么?

天哪,如果一个程序假如就能占1G内存的话,完蛋了,还让不让操作系统干活了?
占内存的多少根代码行数没有直接关系吧
while (true) {
    Object o = new Object();
}
三行代码能占多少内存?


。。。。 你的操作系统1G内存吗? Eclipse都可以上1G以上。

不想跟你做意气之争,你素质太低,
就事论事地说一下吧,
除去操作系统级别的进程和线程,你不可能只单独运行一个程序,
就以Java程序来说,你至少还需要运行虚拟机,运行虚拟机还需要相关的支持程序,
假如这些程序都需要占用1G以上,你有几个1G,
我见过一个公司的服务器,内存也才64G,
我都说了,代码行数和内存占用量没有直接联系,你还举那个例子有意义吗?



没有实际经验别下起哄,还说别人素质低!(如果说的素质低,你可以看下我的回帖)

只有你的系统内存1G,JVM是禁止使用-Xmx1024M的,注意这里是Heap的大小,还不是整个JVM的大小。

给你一个例子:

java -Xmx2048m -Xms2048m

JVM启动的时候就利用了2G以上的内存。

这样的例子很多,难道一个10G的系统,只能给它1G的内存?要知道在X64的系统中,一个Object的对象占用64bit。

留4G内存给系统就足够了。


star385 写道
代码行数和内存占用量没有直接联系


也有关系的,一般的对象放在Heap区,但是还有JVM进程的Heap,代码有一个Code generation区,元信息放在Permanent区域。如果程序使用(可能是第三方包)字节码提升的话,要加Permanent区。-XX:PermSize。

说话的时候,有理有据,不知道还有瞎说,别人自然不会理睬你。(你想想为什么“超级潜水员”会那么说吧)

0 请登录后投票
   发表时间:2011-01-11  
mercyblitz 写道
star385 写道
mercyblitz 写道
star385 写道
超级潜水员 写道
蛋疼的忧虑,从没有担心class占内存及回收的,你就算有几亿行代码吧? 能占1G内存么?

天哪,如果一个程序假如就能占1G内存的话,完蛋了,还让不让操作系统干活了?
占内存的多少根代码行数没有直接关系吧
while (true) {
    Object o = new Object();
}
三行代码能占多少内存?


。。。。 你的操作系统1G内存吗? Eclipse都可以上1G以上。

不想跟你做意气之争,你素质太低,
就事论事地说一下吧,
除去操作系统级别的进程和线程,你不可能只单独运行一个程序,
就以Java程序来说,你至少还需要运行虚拟机,运行虚拟机还需要相关的支持程序,
假如这些程序都需要占用1G以上,你有几个1G,
我见过一个公司的服务器,内存也才64G,
我都说了,代码行数和内存占用量没有直接联系,你还举那个例子有意义吗?



没有实际经验别下起哄,还说别人素质低!(如果说的素质低,你可以看下我的回帖)

只有你的系统内存1G,JVM是禁止使用-Xmx1024M的,注意这里是Heap的大小,还不是整个JVM的大小。

给你一个例子:

java -Xmx2048m -Xms2048m

JVM启动的时候就利用了2G以上的内存。

这样的例子很多,难道一个10G的系统,只能给它1G的内存?要知道在X64的系统中,一个Object的对象占用64bit。

留4G内存给系统就足够了。


star385 写道
代码行数和内存占用量没有直接联系


也有关系的,一般的对象放在Heap区,但是还有JVM进程的Heap,代码有一个Code generation区,元信息放在Permanent区域。如果程序使用(可能是第三方包)字节码提升的话,要加Permanent区。-XX:PermSize。

说话的时候,有理有据,不知道还有瞎说,别人自然不会理睬你。(你想想为什么“超级潜水员”会那么说吧)


好,对于技术之争,就此作罢,
或许你误解了素质低的意思,
一个人的素质往往体现在他对待自己认为错误的观点的态度,
如果你认为我的观点是错误的,你可以用各种论据推翻我的观点,
而不是用侮辱的语言去损害别人的人格,
一个人发表过一次你不认同的观点,他不是SB,
发表过十次也不是,
对持有不同观点的人进行无礼谩骂的人往往才是。
0 请登录后投票
   发表时间:2011-01-11  
star385 写道
mercyblitz 写道
star385 写道
mercyblitz 写道
star385 写道
超级潜水员 写道
蛋疼的忧虑,从没有担心class占内存及回收的,你就算有几亿行代码吧? 能占1G内存么?

天哪,如果一个程序假如就能占1G内存的话,完蛋了,还让不让操作系统干活了?
占内存的多少根代码行数没有直接关系吧
while (true) {
    Object o = new Object();
}
三行代码能占多少内存?


。。。。 你的操作系统1G内存吗? Eclipse都可以上1G以上。

不想跟你做意气之争,你素质太低,
就事论事地说一下吧,
除去操作系统级别的进程和线程,你不可能只单独运行一个程序,
就以Java程序来说,你至少还需要运行虚拟机,运行虚拟机还需要相关的支持程序,
假如这些程序都需要占用1G以上,你有几个1G,
我见过一个公司的服务器,内存也才64G,
我都说了,代码行数和内存占用量没有直接联系,你还举那个例子有意义吗?



没有实际经验别下起哄,还说别人素质低!(如果说的素质低,你可以看下我的回帖)

只有你的系统内存1G,JVM是禁止使用-Xmx1024M的,注意这里是Heap的大小,还不是整个JVM的大小。

给你一个例子:

java -Xmx2048m -Xms2048m

JVM启动的时候就利用了2G以上的内存。

这样的例子很多,难道一个10G的系统,只能给它1G的内存?要知道在X64的系统中,一个Object的对象占用64bit。

留4G内存给系统就足够了。


star385 写道
代码行数和内存占用量没有直接联系


也有关系的,一般的对象放在Heap区,但是还有JVM进程的Heap,代码有一个Code generation区,元信息放在Permanent区域。如果程序使用(可能是第三方包)字节码提升的话,要加Permanent区。-XX:PermSize。

说话的时候,有理有据,不知道还有瞎说,别人自然不会理睬你。(你想想为什么“超级潜水员”会那么说吧)


好,对于技术之争,就此作罢,
或许你误解了素质低的意思,
一个人的素质往往体现在他对待自己认为错误的观点的态度,
如果你认为我的观点是错误的,你可以用各种论据推翻我的观点,
而不是用侮辱的语言去损害别人的人格,
一个人发表过一次你不认同的观点,他不是SB,
发表过十次也不是,
对持有不同观点的人进行无礼谩骂的人往往才是。




昨天晚上很晚回的,没有力气了,:-)!

我没有别的意思,就是问你的OS的问题。哥们你误会了,有伤害你的地方,向你道歉哦!
0 请登录后投票
   发表时间:2011-01-11  
真实环境中,大量的service靠spring实例化(单例)存在,试问不都是单例存在吗!你会觉得不合适吗?
0 请登录后投票
   发表时间:2011-01-11  
kevin1988620 写道
对于类的内存占用,一向不再考虑的范围内,我在学校折腾java项目时,一向不管三期二十一,把hibernate,spring的jar包不加选择扔到lib下面。与这些jar中的类相比,自己设计的几个辅助类,实在是忽略不计。
而且如果运气不好,碰上out of memery,permgen space的时候,调整一下permsize就可以了。
我觉得内存方面主要要顾及的是往内存的static区域方对象,而不是类


你这个习惯工作中要注意了!很危险的!
0 请登录后投票
   发表时间:2011-01-11  
单例模式的出现,最开始是因为老版本的jvm在new对象的时候性能很不好,于是出现了单例模式!但是现在单例往往是做为服务类存在,往往需要多态但又不需要多实例的场景!
静态做为辅助类,在不需要多态的情况下使用静态!


其实现在项目中,楼主担心的问题基本可以忽略真真的程序瓶颈不是这些。
0 请登录后投票
   发表时间:2011-01-11  
我的理解, 单例就是 static的封装, 然后只提供get方法供调用。。
举个例子,
public static User user ;
这时候我们如果其他地方出现如下代码:
   val = null ;
这时候不就改变了val的值了。。

如果使用单例,
private static User user ;
public getVal(){
   if(val==null){
       user = new User();
   }
   return va;
}
这时候,使用者只能获取而不能改变它的值。

  所以,使用单例只是保护这个变量而已。。

至于和空间之类的什么关系,我真不知道,无论单例还是static ,最后不都是一个 静态变量 。。
0 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics