Как JVM гарантирует, что System.identityHashCode () никогда не будет изменяться?

Сначала запустите процесс в фоновом режиме, затем часто наблюдайте за его текущим состоянием, который выполнялся, распечатайте шаблон и еще раз проверьте, выполнялось ли это состояние или нет;

Использование цикла while для просмотра состояния процесса часто.

используйте pgrep или любую другую команду для просмотра и получения статуса выполнения процесса.

при использовании pgrep перенаправьте ненужный вывод в / dev / null по мере необходимости.

Код:

sleep 12&
while pgrep sleep &> /dev/null;do echo -en "#";sleep 0.5;done

Этот «#» будет печататься до тех пор, пока не прекратится спящий режим, этот метод используется для реализации индикатора выполнения для времени выполнения программы.

Вы также можете использовать этот метод для команд для обработки сценариев, чтобы проанализировать его время обработки как визуальное.

BUG: этот метод pgrep работает не во всех ситуациях, неожиданно другой процесс выполнялся с тем же именем, а цикл while не заканчивается.

, чтобы получить статус выполнения процесса, указав его PID, используя, возможно, процесс, который может быть доступен с некоторыми командами,

команда пс перечислит все процесс с идентификатором, вам нужно grep , чтобы узнать pid указанного процесса

68
задан oxbow_lakes 30 June 2009 в 12:50
поделиться

4 ответа

Modern JVMs save the value in the object header. I believe the value is typically calculated only on first use in order to keep time spent in object allocation to a minimum (sometimes down to as low as a dozen cycles). The common Sun JVM can be compiled so that the identity hash code is always 1 for all objects.

Multiple objects can have the same identity hash code. That is the nature of hash codes.

40
ответ дан 24 November 2019 в 14:23
поделиться

In answer to the second question, irrespective of the implementation, it is possible for multiple objects to have the same identityHashCode.

See bug 6321873 for a brief discussion on the wording in the javadoc, and a program to demonstrate non-uniqueness.

16
ответ дан 24 November 2019 в 14:23
поделиться

The general guideline for implementing a hashing function is :

  • the same object should return a consistent hashCode, it should not change with time or depend on any variable information (e.g. an algorithm seeded by a random number or values of mutable member fields
  • the hash function should have a good random distribution, and by that I mean if you consider the hashcode as buckets, 2 objects should map to different buckets (hashcodes) as far as possible. The possibility that 2 objects would have the same hashcode should be rare - although it can happen.
0
ответ дан 24 November 2019 в 14:23
поделиться

As far as I know, this is implemented to return the reference, that will never change in a objects lifetime .

-3
ответ дан 24 November 2019 в 14:23
поделиться
Другие вопросы по тегам:

Похожие вопросы: