小编Gee*_*eek的帖子

JVM 如何处理本机代码

考虑这样一种情况,我必须从我的 Java 程序调用 C++ 代码。C++ 代码创建了数千个对象。这些动态对象存储在哪里?我怀疑是在 JVM 堆中,因为本机代码将是与 JVM 相同的进程的一部分。

如果是,Java 垃圾收集器线程的规则是否适用于 C++ 代码的对象?

jvm native

5
推荐指数
1
解决办法
1032
查看次数

非解释语言可以有垃圾收集器吗?

非解释语言是否可能有垃圾收集器.解释语言让解释器逐行执行程序,因此解释器也可以提供GC的运行时.但是,如果不在代码本身中构建GC,是否可以为任何其他语言使用垃圾收集器?

java language-agnostic interpreter garbage-collection

5
推荐指数
4
解决办法
972
查看次数

何时创建/销毁常量字符串?

请考虑以下代码

public static void method(String[] srgs){  
try{  

}catch(){  
System.out.println("Hello World" + "one");}  
catch(..){  
System.out.println("Hello World" + "two");}
catch(..){  
System.out.println(getString());}
}
Run Code Online (Sandbox Code Playgroud)
  1. 这些字符串何时创建?我假设在运行时发生异常时将创建字符串.字符串在运行时创建并显示.我的同伴告诉我,由于这些是常量字符串,因此只要类加载就会创建它们.那是对的吗?

  2. 收集Strings垃圾的时间是什么时候?他们是垃圾收集了吗?假设在程序生命周期中可能会多次调用相同的方法,只是缓存它们没有意义吗?

java string garbage-collection

5
推荐指数
1
解决办法
302
查看次数

JNI 的 Java 内存管理

我有两个问题:

  1. 如果我有一个对方法的 JNI 调用并且 JNI 方法泄漏内存怎么办。一旦此方法完成,JVM 垃圾收集器将能够取回该内存。听说 JVM 不管理 JNI 使用的堆空间?但是JNI使用的内存是Java进程使用的内存的一部分?

  2. 使用JNI来实现IPC是绝对必要的吗?什么是其他流行的 Java 技术,或者是否有开源库来实现 Java 中的共享内存?

java heap java-native-interface

5
推荐指数
1
解决办法
5749
查看次数

在 Linux 中监控文件访问

对于我正在编写的应用程序,我想知道哪些进程正在访问特定文件并将该信息转储到日志文件中。最后,其中一个进程将删除此文件,我也想知道它的进程名称。

我可以使用 INotify 库来监视文件访问,但它没有给我访问文件的进程名称。这也可以在 linux 上使用 Auditctl 包,但我也不能使用此选项:-(

实际上,出于某些原因,它是一个受控环境,最终客户已准备好运行程序,但尚未准备好安装新软件包或更改现有实用程序。

linux audit inotify

5
推荐指数
1
解决办法
2407
查看次数

Java String对象没有按时收集垃圾

我有一个有趣的Java内存消耗问题.我有一个本机C++应用程序,它调用我的Java应用程序.

应用程序基本上做了一些语言翻译\解析一些XML并响应网络请求.大多数应用程序的状态不必保留,因此它充满了接受String参数并返回字符串结果的Methods.

随着时间的推移,这个应用程序继续占用越来越多的内存,并且有一段时间它开始占用接近2 GB的内存,这使我们怀疑某些Hashtable或静态变量中存在泄漏.经过仔细检查,我们没有发现任何泄漏.比较一段时间内的堆转储,显示char []和String对象占用大量内存.

然而,当我们检查这些char []时,我们发现它们没有GC根,这意味着它们不应该是泄漏的原因.由于它们是堆的一部分,这意味着它们正在等待垃圾收集.在使用了很好的工具MAT\VisualVM\JHat并滚动浏览了很多这样的对象后,我使用了yourkit的试用版.Yourkit直接提供数据,表示96%的char []和String无法访问.这意味着在进行转储时,堆中96%的字符串正在等待垃圾收集.

我知道GC运行很少但是当你通过VisualVM检查时,你实际上可以看到它正在运行:-(而不是如何在堆上有这么多未使用的对象.

IMO这个应用程序永远不应该超过400-500 MB内存,这是它在前24小时停留的地方,但它继续增加堆:-(

我正在运行Java 1.6.0-25.

请注意yourkit的截图

谢谢你的帮助.

java garbage-collection memory-leaks memory-management

5
推荐指数
1
解决办法
3170
查看次数

hs_err_pid 文件中指定的堆的不同部分是什么?

下面是其中的一部分hs_err_pid

Heap
 PSYoungGen      total 13888K, used 9807K [0x8a330000, 0x8b140000, 0x914f0000)
  eden space 13504K, 69% used [0x8a330000,0x8ac67710,0x8b060000)
  from space 384K, 96% used [0x8b0e0000,0x8b13c6e0,0x8b140000)
  to   space 448K, 0% used [0x8b060000,0x8b060000,0x8b0d0000)
 PSOldGen        total 115456K, used 57684K [0x514f0000, 0x585b0000, 0x8a330000)
  object space 115456K, 49% used [0x514f0000,0x54d451c0,0x585b0000)
 PSPermGen       total 16384K, used 11253K [0x4d4f0000, 0x4e4f0000, 0x514f0000)
  object space 16384K, 68% used [0x4d4f0000,0x4dfed618,0x4e4f0000)
Run Code Online (Sandbox Code Playgroud)

什么是

  1. PS年轻一代
  2. 伊甸园空间(从太空到太空)
  3. 旧一代
  4. PSPermGen(对象空间)

java gcc jvm

4
推荐指数
1
解决办法
9247
查看次数

方言没有进入休眠状态

我正在使用Hibernate 3和MySQL5.5.

我是hibernate的新手,我得到以下例外

Exception in thread "main" org.hibernate.HibernateException: 'hibernate.dialect' must be set when no Connection available
    at org.hibernate.dialect.resolver.DialectFactory.buildDialect(DialectFactory.java:106)
    at org.hibernate.cfg.SettingsFactory.buildSettings(SettingsFactory.java:152)
Run Code Online (Sandbox Code Playgroud)

我在hibernate.cfg.xml文件中设置了Dialect属性.我尝试了很多组合

<property name="hibernate.dialect">org.hibernate.dialect.MySQL5Dialect</property>
<property name="dialect">org.hibernate.dialect.MySQL5Dialect</property> 
<property name="DIALECT">org.hibernate.dialect.MySQL5Dialect</property>
Run Code Online (Sandbox Code Playgroud)

什么是实际的属性名称?Hibernate.dialect还是只有方言?什么可能的财产价值?

我正在添加更多信息

<property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>
Run Code Online (Sandbox Code Playgroud)

如下面的答案所示.

我甚至没有构建任何代码只是尝试创建简单的配置:

Configuration cfg = new Configuration().addClass(Employee.class);
sessionFactory = cfg.buildSessionFactory();
Run Code Online (Sandbox Code Playgroud)

下面是实际的配置文件

<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE hibernate-configuration PUBLIC
          "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
          "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
  <session-factory>

    <property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>
    <property name="connection.url">jdbc:mysql://localhost/test</property>
    <property name="connection.username">root</property>
    <property name="connection.password">root1234</property>
    <property name="connection.driver_class">com.mysql.jdbc.Driver</property>
    <property name="show_sql">true</property>
    <property name="format_sql">true</property>
    <property name="hbm2ddl.auto">create</property>
    <!-- JDBC connection pool (use the built-in) -->
    <property …
Run Code Online (Sandbox Code Playgroud)

hibernate dialect

4
推荐指数
2
解决办法
5万
查看次数

我们可以使用scala来调试Java程序

我是一名高级Java职位的候选人,他提到他们广泛使用scala命令提示来调试Java程序.他说甚至可以直接从scala命令提示符调用Java函数.

我从未使用scala,所以我无法验证他的评论.这可能是因为它们都在JVM本身上运行.

快速谷歌搜索没有给出任何指示.

是否真的可以从scala调试Java函数.有人可以给我指点.

提前致谢.

java scala

4
推荐指数
1
解决办法
104
查看次数

在 Java 中流式传输 HTTP 响应

我想将 HTTP 请求的响应写入文件。但是,我想将响应流式传输到物理文件,而无需等待加载整个响应。

我实际上将向 JHAT 服务器发出请求,以从转储中返回所有字符串。我的浏览器在响应完成之前挂起,因为有 70k 个这样的对象,我想将它们写入一个文件,以便我可以扫描。

提前致谢,

httpresponse fileinputstream

2
推荐指数
1
解决办法
1万
查看次数