Questions tagged «java»

Java是一种流行的高级编程语言。如果您在使用或理解语言本身时遇到问题,请使用此标签。这个标签很少单独使用,最常与[spring],[spring-boot],[jakarta-ee],[android],[javafx],[gradle]和[maven]结合使用。


3
烫发空间与堆空间
首先,Perm空间和Heap空间之间有什么区别(JVM选择如何以及如何选择使用每个内存空间)? 其次,但最重要的是,对于标准MVC类型的Java应用程序,建议采用哪种比率?


7
跟踪Java中的内存泄漏/垃圾回收问题
这是我几个月来一直试图寻找的问题。我有一个正在运行的Java应用程序,该应用程序处理xml提要并将结果存储在数据库中。存在间歇性的资源问题,很难追踪。 背景: 在生产包装盒(问题最明显的地方)上,我对包装盒的访问不是特别好,并且无法使Jprofiler运行。那个盒子是运行centos 5.2,tomcat6和java 1.6.0.11的64位四核8gb机器。它以这些java-opts开头 JAVA_OPTS="-server -Xmx5g -Xms4g -Xss256k -XX:MaxPermSize=256m -XX:+PrintGCDetails - XX:+PrintGCTimeStamps -XX:+UseConcMarkSweepGC -XX:+PrintTenuringDistribution -XX:+UseParNewGC" 技术堆栈如下: Centos 64位5.2 Java 6u11 雄猫6 Spring / WebMVC 2.5 休眠3 石英1.6.1 DBCP 1.2.1 的MySQL 5.0.45 高速缓存1.5.0 (当然还有许多其他依赖项,特别是jakarta-commons库) 我最能重现该问题的是内存需求较低的32位计算机。我确实可以控制。我已经使用JProfiler对其进行了探究,并修复了许多性能问题(同步问题,预编译/缓存xpath查询,减少线程池,删除不必要的休眠预取以及处理过程中过度的“缓存变暖”)。 在每种情况下,探查器都显示这些资源由于某种原因占用了大量资源,并且一旦进行更改,这些资源就不再是主要的资源消耗。 问题: JVM似乎完全忽略了内存使用设置,填满了所有内存并且变得无响应。这对于面对最终客户的客户来说是个问题,他们希望定期进行轮询(每5分钟一次,然后重试1分钟),对于我们的运营团队来说,这是不断得到通知的,盒子已变得没有响应,必须重新启动它。此框上没有其他可运行的东西。 问题似乎是垃圾回收。我们使用ConcurrentMarkSweep(如上所述)收集器是因为原始的STW收集器导致JDBC超时并变得越来越慢。日志显示,随着内存使用量的增加,即开始引发cms故障,并踢回原始的世界停止收集器,然后该收集器似乎未正确收集。 但是,使用jprofiler运行时,“运行GC”按钮似乎可以很好地清理内存,而不是显示增加的占用空间,但是由于我无法将jprofiler直接连接到生产盒,并且无法解决已证明的热点问题,因此我正在使用剩下的是将Garbage Collection调为盲人的巫毒教。 我试过的 分析和修复热点。 使用STW,Parallel和CMS垃圾收集器。 以最小/最大堆大小以1 / 2、2 / 4、4 / …

4
在OnClickListener内部,我无法访问很多东西-如何处理?
在OnClickListener内部,我无法访问范围“外部”的大多数变量,如下所示: findViewById(R.id.Button01).setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { Intent mainApps = new Intent(Intent.ACTION_MAIN); mainApps.addCategory(Intent.CATEGORY_LAUNCHER); List<ActivityInfo> activities = this.getPackageManager().queryIntentActivities(mainApps, 0); /* Intent intent = new Intent("com.sygic.drive/com.sygic/drive/.SygicDriveActivity"); startActivity(intent);*/ } }); 在此示例中,我需要获取PacketManager,但由于在OnClickListener中没有可用的上下文,因此无法获取它。 我可以在外面做一个静态引用,并在里面使用它,对吗?似乎总是必须这样做吗?
79 java  android 

9
根据键对哈希图进行排序
我在Java中具有以下哈希图: {B046 = 0.0,A061 = 3.0,A071 = 0.0,B085 = 0.0,B075 = 3.0,B076 = 9.0,B086 = 3.0,B095 = 0.0,B096 = 0.0,A052 = 0.0,B066 = 0.0,B056 = 9.0,B065 = 0.0,B055 = 9.0} 我应该如何对哈希图进行排序,以便考虑字母和数字? 生成的哈希图应如下所示: {A052 = 0.0,A061 = 3.0,A071 = 0.0,B046 = 0.0,B055 = 9.0,B056 = 9.0,B065 = 0.0,B066 = 0.0,B075 = …
79 java  hashmap 


24
需要JVM运行时,Java平台如何独立?
我刚开始学习Java,但对平台独立性这个主题感到困惑。 “独立”是否意味着Java代码应该在任何计算机上运行并且不需要安装特殊软件?但是,JVM必须存在于计算机中。 例如,我们需要拥有Turbo C编译器才能编译C / C ++源代码然后执行它。机器必须具有C编译器。 当Java被描述为“平台无关”时,请问是什么意思?


8
一个单元应该如何测试hashCode-equals合同?
简而言之,根据Java的object.hashCode(),hashCode契约: 除非影响equals()的内容发生变化,否则哈希码不应更改 equals()表示哈希码== 让我们假设主要是对不可变数据对象感兴趣-它们的信息在构造之后就不会改变,因此假定#1保持不变。留下#2:问题仅仅是确认是否等于隐含哈希码==之一。 显然,除非该集合很小,否则我们无法测试每个可能的数据对象。那么,编写可能会遇到常见情况的单元测试的最佳方法是什么? 由于此类的实例是不可变的,因此构造此类对象的方法有限。如果可能,此单元测试应涵盖所有这些内容。在我头顶上,切入点是子类的构造函数,反序列化和构造函数(应简化为构造函数调用问题)。 [我将尝试通过研究回答自己的问题。来自其他StackOverflowers的输入是此过程中受欢迎的安全机制。] [这可能适用于其他OO语言,因此我要添加该标签。]
79 java  unit-testing  oop 

5
您应该在server.xml还是context.xml中设置数据库连接属性
我正在尝试使用JNDI为Spring Web应用程序设置数据库连接属性。 我正在考虑以下两种方法: 方法1: 在您的Spring配置中,您可能会有类似以下内容: <jee:jndi-lookup id="dataSource" jndi-name="java:comp/env/jdbc/facs"/> 然后,在您的webapp /META-INF/context.xml文件中,您也应该具有类似的内容: <?xml version='1.0' encoding='utf-8'?> <!-- antiResourceLocking="true" --> <Context path="/podd-apn" reloadable="true" cachingAllowed="false" antiResourceLocking="true" > <Resource name="jdbc/facs" type="javax.sql.DataSource" username="${database.username}" password="${database.password}" driverClassName="org.postgresql.Driver" url="${database.url}" maxActive="8" maxIdle="4" global="jdbc/facs" /> </Context> 在您的web.xml中,您应该像这样: <!-- JNDI --> <resource-ref> <description>FACs Datasource</description> <res-ref-name>jdbc/facs</res-ref-name> <res-type>javax.sql.DataSource</res-type> <res-auth>Container</res-auth> </resource-ref> 方法二: 在Spring上下文中这样设置: <jee:jndi-lookup id="dbDataSource" jndi-name="jdbc/DatabaseName" …
79 java  spring  datasource  jndi 


18
Mockito-存根方法时发生NullpointerException
因此,我开始为我们的Java Spring项目编写测试。 我使用的是JUnit和Mockito。有人说,当我使用when()... thenReturn()选项时,可以模拟服务,而无需模拟它们。所以我要做的是设置: when(classIwantToTest.object.get().methodWhichReturnsAList(input))thenReturn(ListcreatedInsideTheTestClass) 但是无论我执行哪一个子句,总会得到NullpointerException,这当然是有道理的,因为input为null。 另外,当我尝试从对象模拟另一个方法时: when(object.method()).thenReturn(true) 在那里,我还得到了一个N​​ullpointer,因为该方法需要一个未设置的变量。 但是我想使用when().. thenReturn()解决创建此变量的问题,依此类推。我只想确保,如果有任何类调用此方法,那么无论如何,只要返回true或上面的列表即可。 从我的角度来说这是一个基本的误会,还是还有其他问题? 码: public class classIWantToTest implements classIWantToTestFacade{ @Autowired private SomeService myService; @Override public Optional<OutputData> getInformations(final InputData inputData) { final Optional<OutputData> data = myService.getListWithData(inputData); if (data.isPresent()) { final List<ItemData> allData = data.get().getItemDatas(); //do something with the data and allData return …

9
即使在我的MAC上安装了JRE 8-“没有Java运行时,要求安装”也会显示在终端中
即使在我的MAC OS Yosemite 10.10.3上安装了JRE 8,同时在sdk中运行工具中存在的Android时-终端上仍显示错误-“不存在Java运行时,要求安装”,我该如何解决此问题? 我想安装Xamarin测试记录器-安装后,他们要求我安装Android SDK SDK已在Library / Developer / Xamarin / android-sdk中下载 现在,当我运行存在于tools文件夹中的Android时-得到错误-没有Java运行时 我安装了JRE 8,并从其站点获取了经过验证的Java版本 有人可以帮忙!!
79 java  xamarin 

5
字符串替换方法不替换字符
我有一个以字符串形式传递的句子,我正在对单词“ and”进行替换,我想用“”替换它。并且它不是用空格替换“和”一词。以下是我的逻辑示例。而且,当我调试该逻辑时,它的逻辑确实落入了句子。 String sentence = "Define, Measure, Analyze, Design and Verify" if (sentence.contains("and")){ sentence.replace("and", " "); } 这里有我想念的东西吗?
79 java  string  replace 

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.