草庐IT

弱引用

全部标签

java - 为什么大多数 JVM gc 不使用引用计数?

为什么他们不需要它们,如果有人决定实现使用它们的虚拟机,他们可能会面临什么问题? 最佳答案 由于循环引用,引用计数容易发生内存泄漏。假设您有一个简单的“节点”对象,它引用了另一个节点,并假设您将其引用设置为自身。该对象的引用计数将始终为1,即使全局变量或堆栈变量中没有指向它的句柄,因此它永远不会被垃圾收集并泄漏内存。这是一个简单的例子,但任何循环引用都会有同样的问题。当然,可以检测到循环引用,但据推测这样做的开销会增加足够的复杂性,以至于其他GC方法更具吸引力。 关于java-为什么大多

Java "self"(静态)引用

我正在以静态上下文方式寻找对JAVA中当前类的“self”引用,如PHPScopeResolutionOperator?解决方案:超出范围?请注意,这与静态定义相比真的很慢(300倍):staticLoggerLOG=LoggerFactory.getLogger(newRuntimeException().getStackTrace()[0].getClassName());老式的方式是:staticLoggerLOG=LoggerFactory.getLogger(.class.getName());还有其他选择吗?我正在寻找一种将记录器定义放在抽象类中的方法。记录器应自行确定调用

java - 如何使用::运算符作为引用

这个问题在这里已经有了答案:JavastreamAPI:aretheresyntaxsugarforidentityfunctor?(1个回答)关闭5年前。转换对象列表Foo有一个id,到Map有了那个id作为key,使用流API很容易:publicclassFoo{privateIntegerid;private....gettersandsetters...}MapmyMap=fooList.stream().collect(Collectors.toMap(Foo::getId,(foo)->foo));有什么方法可以替代lambda表达式:(foo)->foo使用::的东西运算

java - 值为 null 的引用类型类型?

根据:http://java.sun.com/docs/books/jls/second_edition/html/typesValues.doc.html4.5.2引用类型的变量引用类型可以包含一个null引用。当分配的值为null时,是否可以检索引用类型的声明类型?具体来说,在使用反射的方法中,我希望该方法是null安全的并作用于原始声明的类型(尽管我知道以下代码片段不起作用),例如:StringreferenceType=null;MyReflectionClass.reflectionMethod(referenceType);...publicstaticvoidreflec

java - 通过引用传递 double 值

如何在java中通过引用传递double值?例子:Doublea=3.0;Doubleb=a;System.out.println("a:"+a+"b:"+b);a=5.0;System.out.println("a:"+a+"b:"+b);此代码打印:a:3b:3a:5b:3我的问题是让它打印:a:3b:3a:5b:5我的目标:我正在用jess编写一个专家系统,在那个应用程序中,一个段的长度会有一个double值,现在double值不在一个段中;它在许多其他部分、比例类等中,所有这些都在引用它,等待它发生变化,以便它们可能满足某些规则。如果我无法更改那个double值,我就无法触发包

java - 具有不可变参数的自引用枚举

考虑以下ssccepublicenumFlippableA(Z),B(Y),Y(B),Z(A);privatefinalFlippableopposite;privateFlippable(Flippableopposite){this.opposite=opposite;}publicFlippableflip(){returnopposite;}}这不会编译,因为Z和Y还没有被声明为A和的参数>B的构造函数。可能的解决方案1:硬编码方法publicenumFlippable{A{publicFlippableflip(){returnZ;}},B{publicFlippablefl

java - 使用 JPA 关系查询时非法尝试取消引用集合

我有2个类:@Table(name="PEOPLE")@EntityclassPerson{@OneToMany(mappedBy="owner")Setcars;}@Table(name="CARS")@EntityclassCar{@ManyToOne@JoinColumn(name="OWNER_ID",referencedColumnName="ID")Personowner;@Column(name="MODEL")Stringmodel;}我正在尝试按模型查询人员。运行以下代码失败,即使表之间的联系很清楚:selectmofromPersonmowheremo.cars.m

java - 如何在 Eclipse 中添加引用

我用ACCESS/VBA开发了一个小软件。它处理LotusNotes,所以在VisualBasic编辑器中,我只是转到工具->引用并检查了LotusNotes自动化类,这让我可以使用它。现在我想把它移植到Java。我上次使用Java大约是4年前。我让我的公司在我的电脑上安装了Eclipse。我不认为我会在编程方面遇到麻烦,因为我来自.net(C#)背景。但是,我似乎找不到通过Eclipse引用LotusNotes类的方法。该类是程序文件目录中的“tlb”文件。 最佳答案 右键单击您的项目并选择属性以打开“属性”对话框。点击左侧导航树

java - 如何确定 JNI 全局引用内存泄漏的原因?

我正在使用Tomcat,在停止我的Web应用程序后,仍然存在对我的Web应用程序的类加载器实例的引用。结果是大量内存(主要与静态数据相关)不会被释放。这迟早会导致OutOfMemoryError。我做了一个heapdump,然后我意识到它由一个JNIglobalreference持有防止类加载器将是garbagecollected.我的应用程序不使用JNI。我也没有使用ApacheTomcatNativeLibrary。我正在使用Sun/OracleJDK。我想追查这个全局引用的原因/来源。(我的猜测是JVM内部引用了类加载器-但为什么/在哪里?)。问题:有哪些方法/工具集可以实现这一

java - 在 Spring Boot 中获取对当前 Activity 数据源的引用

我想通过DataSourceInitializer实现数据库数据初始化。我在我的SpringBootmain方法下面有这些方法,但它似乎根本没有执行(我尝试故意删除字符只是为了触发一个错误来确认执行。什么也没发生。):@ConfigurationProperties(prefix="spring.datasource")@BeanpublicDataSourcegetDataSource(){//iwashopingthiswasgoingtopullmycurrentdatasource,as//definedinapplication.propertiesreturnDataSou