社区
Java EE
帖子详情
弱弱的问一下,static方法里的变量是不是会及时回收的?
fuyiyong
2010-08-27 09:58:43
比如这个aa和bb:
public static void main(String[] args)
{
a();
b();
}
static void a()
{
int aa = 0;
aa += 1;
}
static void b()
{
int bb = 0;
bb += 1;
}
...全文
2434
11
打赏
收藏
弱弱的问一下,static方法里的变量是不是会及时回收的?
比如这个aa和bb: public static void main(String[] args) { a(); b(); } static void a() { int aa = 0; aa += 1; } static void b() { int bb = 0; bb += 1; }
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
11 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
fuyiyong
2010-08-27
打赏
举报
回复
[Quote=引用 6 楼 ccex1556 的回复:]
“static 定义的静态全局方法只在定义它的文件内有效, 静态方法的内存空间直到程序退出才释放所占用的内存空间。”
猜想一下,
如果你的方法是静态的。那里面的变量应该有继承静态
。在java中静态变量不能被定义在静态方法中。。会报语法错误。。你可以试着在试调里面测试一下你定义的变量是否有值
[/Quote]
这就是我的疑问。。。。那如果静态方法里new了一个Stringbuilder,每次进来都会new,那就不会回收了?
ccex1556
2010-08-27
打赏
举报
回复
“static 定义的静态全局方法只在定义它的文件内有效, 静态方法的内存空间直到程序退出才释放所占用的内存空间。”
猜想一下,如果你的方法是静态的。那里面的变量应该有继承静态。在java中静态变量不能被定义在静态方法中。。会报语法错误。。你可以试着在试调里面测试一下你定义的变量是否有值
fuyiyong
2010-08-27
打赏
举报
回复
[Quote=引用 4 楼 closewbq 的回复:]
方法内的变量的生命周期也就是整个方法体,当方法执行完成后,那么这个变量也就结束了。
但是能否及时回收,我想这还是看系统中的内存情况。因为负责垃圾回收的低优先级进程,会不停的扫描内存情况。只有内存不足的情况下,才会真正意义上进行垃圾回收。
[/Quote]
只是加了这个Static之后我就不确定了。。。加了之后呢?
closewbq
2010-08-27
打赏
举报
回复
方法内的变量的生命周期也就是整个方法体,当方法执行完成后,那么这个变量也就结束了。
但是能否及时回收,我想这还是看系统中的内存情况。因为负责垃圾回收的低优先级进程,会不停的扫描内存情况。只有内存不足的情况下,才会真正意义上进行垃圾回收。
niu90
2010-08-27
打赏
举报
回复
猜想是被执行完后被销毁....
bean
2010-08-27
打赏
举报
回复
我觉得应该会,在STATIC方法中声明的变量应该也属于局部变量,当方法调用完成后,局部变量应该被回收
强长黑粗硬
2010-08-27
打赏
举报
回复
会,static方法里的变量和普通的变量没什么区别
fuyiyong
2010-08-27
打赏
举报
回复
OK,OK
强长黑粗硬
2010-08-27
打赏
举报
回复
[Quote=引用 8 楼 fuyiyong 的回复:]
谁给我一个准信啊
[/Quote]
你还要什么准信呀?大家不是都很明确地告诉你会回收吗?只不过不一定什么时候回收,因为gc是虚拟机执行的。
强长黑粗硬
2010-08-27
打赏
举报
回复
[Quote=引用 7 楼 fuyiyong 的回复:]
这就是我的疑问。。。。那如果静态方法里new了一个Stringbuilder,每次进来都会new,那就不会回收了?
[/Quote]
你到底要说什么?每次是new呀,但是new出来的对象又不是一个,在内存中地址也没什么联系,之前生成的那些当需要的时候不就被回收了吗?
跟每次new有什么关系吗?又不是静态变量公用地址的。
fuyiyong
2010-08-27
打赏
举报
回复
谁给我一个准信啊
零基础Java入门课程-类和对象
该课程由付强老师主讲,系统的、全面的、具体的讲解了java入门的知识。可以使初级的学员入门。Java入门Java的历史、Java的版本、Java的优势、软件行业前景Java开发环境搭建、编写Java入门练习虚拟机的运行机制、Java的平台无关性、虚拟机垃圾
回收
机制基础语法关键字、标识符、Java数据类型分类、基础数据类型、取值范围
变量
、常量、三种注释、生成doc文档、运算符、表达式if语句、switch语句、嵌套判断for语句、while语句、do-while语句、嵌套循环类和对象面向过程和面向对象的区别类的构成、访
问
修饰符、对象的内存分配this关键字、按值传递与按引用传递、对象的初始化顺序高级类特性类的继承、父子类的初始化顺序、单继承性
方法
的覆盖、重载、super关键字、多态、instanceof关键字、强制类型转换、
static
关键字、final关键字数组和枚举一维数组的应用及内存分配多维数组的应用及内存分配数组的复制、数组的按引用传递排序算法:冒泡、直接选择、插入选择、希尔、快速、归并、堆排序Arrays工具类的应用枚举类型的应用常见类的使用Object类的底层及应用、Objects类String类的底层及应用、正则表达式StringBuffer和StringBuilder的底层及应用Math类的应用、包装类的应用日期类的应用:Date、DateFormat、Calendar、LocalDateTime、Instant、LocalDate、MonthDay、ZonedDateTime、YearMonth、新旧日期转换BigInteger和BingDecimal、DecimalFormatSystem类、Scanner类抽象类和接口抽象类的规则及应用接口的规则及应用默认
方法
、静态
方法
、函数式接口、Lambda表达式异常异常的定义异常的处理:抓(try-catch-finally)、抛(throws)异常的分类、自定义异常的应用、throw关键字集合框架集合框架结构:接口、实现类Collection接口的
方法
、Set接口的
方法
、List接口的
方法
、Map接口的
方法
Array、Linked、Hash、Tree底层实现原理泛型的作用、Collections工具类、历史集合类I/O流Path类的原理及应用、Files类的原理及应用文件字节流FileInputStream的原理及应用对象类、缓冲流、数据流的原理及应用字符流的原理及应用多线程进程与线程的概念、查看线程对象Java内存模型线程的创建与启动:扩展Thread类、实现Runnable接口、实现Callable接口、线程池线程状态的转换:新建、就绪、运行、阻塞、死亡线程的调度:sleep、yield、join、interrupt、wait后台线程、定时任务线程的并发与同步、同步锁、同步块、线程安全的类Lock接口、CAS、volatile修饰符内部类成员内部类、本地内部类的应用匿名内部类的原理及引用、Lambda表达式设计模式基础设计模式概念、框架概念7大设计原则:开闭原则、依赖倒置原则、单一职责原则、接口隔离原则、迪米特原则、
里
氏替换原则、合成复用原则单例模式、工厂模式、模板模式、代理模式、装饰模式、适配器模式、外观模式、策略模式、观察者模式、命令模式、备忘录模式、观察者模式反射反射包Class类的使用反射获取类属性、
方法
、构造器通过反射创建类对象/通过反射调用
方法
反射的应用
ThreadLocal 与
static
变量
参考文章:ThreadLocal 与
static
变量
ThreadLocal是为解决多线程程序的并发
问
题而提出的,可以称之为线程局部
变量
。与一般的
变量
的区别在于,生命周期是在线程范围内的。
static
变量
是的生命周期与类的使用周期相同,即只要类存在,那么
static
变量
也就存在。 那么一个
static
的 ThreadLocal
会
是什么样的呢? 看下面一个例子, publicclassSequenceNumber{ private
static
ThreadLocal<Inte...
为何通常“将ThreadLocal
变量
设置为
static
”?
为何通常“将ThreadLocal
变量
设置为
static
”?
java
static
变量
内存释放,Java内存泄漏
Java中的内存管理要了解Java中的内存泄漏,首先就得知道Java中的内存是如何管理的。在Java程序中,我们通常使用 new 为对象分配内存,而这些内存空间都在堆上。Java判断对象是否可以
回收
使用的而是可达性分析算法。这个算法的基本思路就是通过一系列名为 "GC Roots" 的对象作为起始点,从这些节点开始向下搜索,搜索所走过的路径称为引用链(Reference Chain),当一个对象到...
【java】为何通常“将ThreadLocal
变量
设置为
static
”?
本文参考了:https://www.zhihu.com/question/35250439 理由: 为了避免重复创建TSO(thread specific object,即与线程相关的
变量
。) 需要注意的是:无法解决共享对象的更新
问
题。(引用于《阿
里
巴巴JAVA开发规范》)我的理解是,
static
定义的类
变量
本来是可以进行
变量
共享的,但是因为ThreadLocal根除了对
变量
的共享,所以stati...
Java EE
67,515
社区成员
225,878
社区内容
发帖
与我相关
我的任务
Java EE
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
复制链接
扫一扫
分享
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章